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

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

我有两个表 Plants 和 Information。每个工厂都有很多信息,但每个工厂都有一个 MainInformation。所以两者之间存在一对多关系和一对一关系。 Information 表有一个 PlantID,Plants 表有一个 MainInformationID。我希望两个表中的两个字段都不是空值。但是现在您不能将这两条记录中的任何一条插入到它们的表中,因为每条记录都要求它们的字段不为空,这意味着它们需要先创建另一条记录才能创建它们自己。也许这不是一个好的数据库设计,应该改变一些东西? (我是数据库和 Entity Framework 的新手)

我尝试手动插入到数据库中,但我做不到。我还使用 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();                
        }

最佳答案

其中一个

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

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

听起来像 EAV 模式,但还有其他问题

关于c# - 数据库双连接关系插入问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2396263/

相关文章:

c# - 在 ASP.NET C# Web 应用程序中动态创建图像的正确方法?

c# - DataSets to POCOs - 关于 DAL 架构的查询

c# - 如何添加对由 C# 项目调用的非托管 C++ 项目的引用?

mysql - 如果您没有所需的变量,如何从数据库中选择字段?

c# - LinqKit Predicate Builder 抛出 TypeLoadException?

c# - 如何使用 LINQ 比较两个 IEnumerable 集合

对引用其他列的列进行 SQL 检查约束

mysql - 对州进行分组并计算每个州的邮政编码数量

c# - ASP.NET MVC 5 & Entity Framework 多对多关系

c# - EntityFramework 发生异常