我有两张桌子植物和信息。每个工厂都有很多信息,但每个工厂都有一个主要信息。因此,两者之间存在一对多的关系和一对一的关系。信息表具有PlantID,而Plants表具有MainInformationID。我希望两个表中的两个字段都不为空。但是现在你不能将两个记录中的任何一个插入到它们的表中,因为每个记录都要求它们的字段不为空,这意味着它们需要首先创建另一个记录才能创建它们自己。也许这不是一个好的数据库设计,应该改变什么? (我是数据库和实体框架的新手)
我尝试手动插入数据库本身,但我无法做到。我还尝试使用EntityFramework进行此代码。
using (var context = new MyEntities())
{
var p = new Plant()
{
LatinName = "latinNameTest",
LocalName = "localNameTest",
CycleTime = 500
};
var i = new Information()
{
ShortDescription = "ShortDesc",
LongDescription = "LongDesc"
};
p.MainInformation = i;
i.Plant = p;
context.AddToPlants(p);
context.AddToInformation(i);
context.SaveChanges();
}
答案 0 :(得分:2)
您需要更改表以允许null。没有其他办法可以做到这一点。
答案 1 :(得分:2)
其中一个
SQL Server不允许在没有“代码更改”权限的情况下进行延迟约束检查,因此即使包装在事务中也不起作用
听起来像是一个EAV架构,还有其他问题
答案 2 :(得分:0)
您可能希望查看数据库事务以及如何将它们与Entity Framework一起使用。您可以将两个INSERTS包装到单个数据库事务中,因此唯一的结果是它们都进入或不进入。
Here是使用EF进行交易的链接。我没有通读它,但似乎谈论它们足以让你开始。