数据库双连接关系插入问题

时间:2010-03-07 12:45:00

标签: c# sql entity-framework database-design foreign-key-relationship

我有两张桌子植物和信息。每个工厂都有很多信息,但每个工厂都有一个主要信息。因此,两者之间存在一对多的关系和一对一的关系。信息表具有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();                
        }

3 个答案:

答案 0 :(得分:2)

您需要更改表以允许null。没有其他办法可以做到这一点。

答案 1 :(得分:2)

其中一个

  • 1-1 FK列必须为NULL
  • 必须禁用FK以允许在子级
  • 之前插入父级
  • 您有一个虚拟信息行,默认情况下在FL列
  • 中使用

SQL Server不允许在没有“代码更改”权限的情况下进行延迟约束检查,因此即使包装在事务中也不起作用

听起来像是一个EAV架构,还有其他问题

答案 2 :(得分:0)

您可能希望查看数据库事务以及如何将它们与Entity Framework一起使用。您可以将两个INSERTS包装到单个数据库事务中,因此唯一的结果是它们都进入或不进入。

Here是使用EF进行交易的链接。我没有通读它,但似乎谈论它们足以让你开始。