原因:在一个表中,我有如下字段

表名:orderInfo

列名:companySend,companyReceiver

先展示表结构,(手打了,见谅)

public class OrderInfo
{
public int id{ get; set; }
public string Name { get; set; }
public Nullable<int> companyId1{ get; set; }
public Nullable<int> companyId2{ get; set; } [ForeignKey("companyId1")]
public CompanyInfo company1{ get; set; } [ForeignKey("companyId2")]
public CompanyInfo company2{ get; set; } } public class CompanyInfo
{
public int id{ get; set; }
public string Name { get; set; } public List<OrderInfo> order1 { get; set; }
public List<OrderInfo> order2 { get; set; }
}

这里我们看见,对于order,我存在了两个关联company的字段。

如果进入codefirst,那么实际会出现问题。

大致是,对于companyid会出现4个字段,companyid1,companyid2,companyInfoid1,companyInfoid2

怎么解决这个问题呢?

我们先明白,出现这个问题,主要是order虽然申明了foreignkey和字段名称。但是系统不知道应该对应 order1还是order 2

解决这个问题,我们只需要这个:

protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
            //增加映射关系
            modelBuilder.Entity<Order>()
 .HasRequired(a => a.company1)
 .WithMany(u2 => u2.order1)
 .HasForeignKey(a => a.companyId1)
 .WillCascadeOnDelete(false);
            modelBuilder.Entity<Order>()
             .HasRequired(a => a.company2)
             .WithMany(u2 => u2.order2)
             .HasForeignKey(a => a.companyId2)
             .WillCascadeOnDelete(false);
        }

Code First 重复外键的更多相关文章

  1. Code First 重复外键(简单方法)

    之前有说过  Code First 重复外键   的一种解决方案.   http://blog.csdn.net/hanjun0612/article/details/50478134 虽然可以解决问 ...

  2. Entity Framework Code First主外键关系映射约定

    本篇随笔目录: 1.外键列名默认约定 2.一对多关系 3.一对一关系 4.多对多关系 5.一对多自反关系 6.多对多自反关系 在关系数据库中,不同表之间往往不是全部都单独存在,而是相互存在关联的.两个 ...

  3. Entity Framework 4.1 - Code First 指定外键名称

    Entity Framework 4.1 中,生成外键的方式有以下几种: 1-指定导航属性,会自动生成外键,命名规则为:“表名_主键名”2-默认情况下与导航属性的主键名称相同的字段会自动被标记为外键, ...

  4. Code First 指定外键名称

    指定类外键有注释(DataAnnotation)和FluentAPI两种方式, 目前掌握的知识我们先把DataAnnotation可用的四种方式总结如下 第一种方法: //1-指定导航属性,会自动生成 ...

  5. code first 添加外键时,与原有的数据冲突ALTER TABLE 语句与 FOREIGN KEY 约束"FK_XXXXX"冲突

    问题的原因是新增的外键字段没有默认值,造成的,有很多方法可以解决,我这里通过修改生成的迁移文件,设定为可空,或者设置默认值即可.具体看情况使用.

  6. EntityFramework Code First 构建外键关系,数据库不生成外键约束

    创建 ExtendedSqlGenerator类 public class ExtendedSqlGenerator : SqlServerMigrationSqlGenerator { #regio ...

  7. MySQL基础9-主键约束、外键约束、等值连接查询、一对一和多对多关系

    1.主键约束和外键约束 外键约束 * 外键必须是另一表的主键的值(外键要引用主键!) * 外键可以重复 * 外键可以为空 * 一张表中可以有多个外键! 概念模型在数据库中成为表 数据库表中的多对一关系 ...

  8. EF Code First 主键对应多个外键

    这是一位朋友提出的疑问,EF 映射主键可以对应多个外键吗?如果外键设置级联删除会发生什么情况?下面做一个测试,示例实体代码: public class Blog { public Blog() { P ...

  9. Code First 中使用 ForeignKey指定外键时总是显示未引用

    Code First 中使用 ForeignKey指定外键时总是显示未引用 原因是:开发环境是在.NET 4.0 修改项目,改为.net 4.5

随机推荐

  1. ShellExecute使用详解

    ShellExecute命令 ⑴ 函数原型: HINSTANCE ShellExecute(HWND hwnd, LPCTSTR lpOperation, LPCTSTR lpFile, LPCTST ...

  2. c语言程序 第二例

    求5! # include <studio.h> int main(){ int i,t; t=1; i=2; while (i<=5){ t=t*i i=i+1 } printf( ...

  3. 微信小程序——获取用户unionId

    1.获取code 2.获取openid 3.获取access_token 4.获取unionid

  4. 全自动数据表格JQuery版

    由于最近工作上有些变动,已经快一个月没有写博客了.上一篇博客[React]全自动数据表格组件——BodeGrid介绍了全自动数据表格的设计思路以及分享了一个react.js的实现.但是现实情况中为了节 ...

  5. item 3: 理解decltype

    本文翻译自modern effective C++,由于水平有限,故无法保证翻译完全正确,欢迎指出错误.谢谢! 博客已经迁移到这里啦 decltype是一个奇怪的东西.给出一个名字或者一个表达式,de ...

  6. C# 爬虫 正则、NSoup、HtmlAgilityPack、Jumony四种方式抓取小说

    心血来潮,想爬点小说.通过百度选择了个小说网站,随便找了一本小说http://www.23us.so/files/article/html/13/13655/index.html. 1.分析html规 ...

  7. RuntimeError: Python is not installed as a framework 错误解决方案

    在virtualenv环境下使用matplotlib绘图时遇到了这样的问题: >>> import matplotlib.pyplot as pltTraceback (most r ...

  8. Linux下FastDFS分布式存储-总结及部署记录

    一.分布式文件系统介绍分布式文件系统:Distributed file system, DFS,又叫做网络文件系统:Network File System.一种允许文件通过网络在多台主机上分享的文件系 ...

  9. Docker容器学习梳理 - 容器时间跟宿主机时间同步

    在Docker容器创建好之后,可能会发现容器时间跟宿主机时间不一致,这就需要同步它们的时间,让容器时间跟宿主机时间保持一致.如下: 宿主机时间 [root@slave-1 ~]# date Fri M ...

  10. 【个人阅读】软件工程M1/M2做一个总结

    1.以前博客链接 http://www.cnblogs.com/penglinjiang/p/4027850.html http://www.cnblogs.com/penglinjiang/p/40 ...