EF为存在的表新增外键

请问:
如何在C#中使用EF为已存在的两张数据表新增外键约束关系!
描述:
在一个解决方案可的两个项目中,两个独立的数据源。A数据源中的company表要和B数据源的project表建立一对多的关系。
在微软官方教程上没有。教程中都讲的是一个数据源。
http://www.entityframeworktutorial.net/code-first/configure-one-to-many-relationship-in-code-first.aspx
https://msdn.microsoft.com/en-us/library/jj591620(v=vs.113).aspx
而且建立外键关系时同时创建了数据表。没有看到对已存在的两张表新建关系。
目前在A数据源中companyInfo类中加了一条语句:

public virtual ICollection ProjectInfoes { get; set; }
用来建立companyInfo表和projectInfo表之间的外键关系。update-database数据源A后。在B数据源也需要update-database,因为B数据源中的projectInfo 表和该数据源中其他表也有外键关联。在SQL Server 2008R2中为一个数据库。因此会报错:project表已在。如下图图片说明:请大家帮看一下吧!谢谢!

0

1个回答

看来很少有人碰到!已经解决了!把两个数据源合并成为一个就可以了。

0
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
其他相关推荐
EF 查询刚新增实体数据查不到外键表
如题,rnrn如:我有个User类,User类有个外键属性 Dept部门rnrn按正常情况,我查出User类后 ,可以 通过 User.Dept 这样的方式获取到 部门信息 rnrn但是不知为什么rn当我是 新增User,后 SaveChanges()后, 再查询刚才添加的User时, 就无法 获取得到User.Dept ,错误提示说 Dept为空,我断点时 发现 外键ID是有的 但是 Dept为空,而且不是代理。rn不管我怎样查询User,都不能成为代理类,估计就是因为这样 无法 得到 User.Deptrnrn如果 User有好几个外键表的话。。都不能直接“.”出来,是很痛苦的。rn救解。。。。。。
EF 查询外键表数据
我采用code frist方式:rnCourse表rnGrade表rnGradeToCourse表rnCourse:rnpublic class Coursern rn public int ID get; set; rn public string Name get; set; rn public int? Sort get; set; rn public bool? IsShow get; set; rn public DateTime? UpdateTime get; set; rn public virtual IList Grades get; set; rn}rnGrade:rnpublic class Gradernrn public int ID get; set; rn public int SchoolID get; set; rn public string GradeName get; set; rn public int? Sort get; set; rn public bool? IsShow get; set; rn public DateTime? UpdateTime get; set; rn public virtual IList Classes get; set; rn public virtual School School get; set; rn public virtual IList Students get; set; rn public virtual IList Courses get; set; rnrnrnrnpublic CourseMap()rn rn // Primary Keyrn this.HasKey(t => t.ID);rnrn // Propertiesrn this.Property(t => t.ID)rn .HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);rn rn this.Property(t => t.Name)rn .HasMaxLength(20);rn rn // Table & Column Mappingsrn this.ToTable("Course");rn this.Property(t => t.ID).HasColumnName("ID");rn this.Property(t => t.Name).HasColumnName("Name");rn this.Property(t => t.Sort).HasColumnName("Sort");rn this.Property(t => t.IsShow).HasColumnName("IsShow");rn this.Property(t => t.UpdateTime).HasColumnName("UpdateTime");rnrn // Relationshipsrn this.HasMany(t => t.Grades)rn .WithMany(t => t.Courses)rn .Map(m =>rn rn m.ToTable("GradeToCourse");rn m.MapLeftKey("CourseID");rn m.MapRightKey("GradeID");rn );rn rn rnrnrn我现在想查询GradeToCourse表中的内容,然后分页,如何查询啊。。。rn
EF外键查询问题
var model = a.Select(n => n.b).Distinct().ToList();rnrn如上, a查询的是A表, 里面有200条数据.。b关联的是B表, 里面有10调数据。rn但是上面model 查询出来还是200条。应该是要<=10条数据才对。rnrnrn
EF之多外键查询
-
请问为一个已经存在的表如何加外键?并且该建已经是原表的外键
譬如说我已经建立了表table1,table2rncreate table table1(id integer not null ,rn basicid integer not null,rn memo char(128) ,rn primary key(id, basicid ) )rncreate table table2 (id interger not null,rn memo char(128)rn primary key(id) )rn为什么我要为table1的basicid加外键时我执行rnalter table table1 add foreign key(basicid) references table2(id)时rn会出错:rnASA Error -113: Column 'basicid' in foreign key has a different definition than primary keyrnrn请教各位高手应该任何实现,谢谢!rn
EF批量新增优化
数据库创建命令 if exists (select 1 from sys.sysreferences r join sys.sysobjects o on (o.id = r.constid and o.type = 'F') where r.fkeyid = object_id('Adress') and o.name = 'FK_ADRESS_REFERENCE_USERS')
pgsql为表建立外键
A列是TableA的主键,B列为TableB的主键,B在TableA中作为外键  语法:  alter table TableA add constraint FK_B foreign key (B) references TableB(B);  ALTER TABLE public.hd_user DROP CONSTRAINT hd_user_fk RESTRICT;  示例.
Oracle 查询那些表存在外键
select * from user_constraints c where c.constraint_type = 'R' and c.table_name = '<table_name>'
mysql给已存在的表添加外键
[code=&quot;sql&quot;] alter table 外键所在的表名 add constraint 外键名 foreign key(外键所在的列名) references 对应主键所在表名(主键所在列名); [/code]
存在主外键的表怎样封装实体类
当两个表存在主外键关系时,怎样封装实体类才会让系统的性能更好,并且维护起来简单,执行效率高,插入更新方便呢?
Ado.net EF外键查询的问题
有两张表Joke,Tag,Tag通过JokeId和Joke的Id关联,Joke和Tag是一对多的关系,Tag还有另外一个字段Contentrn怎样通过Content获取到Joke呢?rnrn这样写报错rnvar tag = (from item in m_db.tag where item.Content == content select item).FirstOrDefault();rnvar jokes = (from item in m_db.joke where item.tag.Contains(tag) select item).ToList();
ef code first 外键问题
有两个model,一对多关系的,我想添加数据岛关系为多的这张表,这张表有个外键,我要怎么操作,让这张表新增数据,不去新增外键所对应的表。rnrnpublic class JournalSortrnrn rnrn public int ID get; set; rnrn public string JournalSortName get; set; rnrn public virtual RootSort RootSorts get; set; rnrn public List JournalContents get; set; rnrn rnrnrnpublic class RootSortrnrn rnrn public int ID get; set; rnrn public string RootSortName get; set; rnrn public List JournalSorts get; set; rnrn rnrnrn两个模型如下rnrn求高手解答 感激不尽
EF映射没有外键怎么办
EF映射怎么添加外键。
请问EF外键表新增数据的时候有AddRange这种方法么?
现在将项目从linq2Sql转为EF,之前写的代码中如果插入外键表的话有这种写法rn[code=csharp]rn//新增属性的多语种rnif (skuProp.LstPropLang.Count() > 0)rnrn newProp.PropertyLanguage.AddRange(skuProp.LstPropLang.Select(p => new LinqToSql.PropertyLanguagern rn LanguageID = p.PropLangId,rn Name = p.PropLName,rn Status = 1,rn ));rnrn[/code]rn这是因为linq2Sql外键对象是EntitySetrn可是ef中外键对象只是实现了ICollection接口,结果只有Add没有AddRange,现在只能写成rn[code=csharp]rn//新增属性的多语种rnskuProp.LstPropLang.ForEach(p => newProp.PropertyLanguages.Add(new PropertyLanguagern rn LanguageID = p.PropLangId,rn Name = p.PropLName,rn Status = 1,rn ));rn[/code]rn请问有没有更好的方法来添加外键表的数据?
如何在数据库中找到外键为NULL的纪录?要不存在NULL外键的表也行
问题背景:rn系统初始化时一般会导入一部分基本数据,由于导入表的次序是按表标识符的顺序排列的,所以导入的时候会去掉外键约束。rn但是导入完了,我想知道哪个表/纪录存在空的外键。怎么办?rnrn
用ef批量新增数据
我现在写的用for循环每笔保存一下,这样不能同时成功或失败rn怎么拼接成list?直接用paymentAgentService.AddRange(LIst);保存listrn[code=csharp]rn public IActionResult SaveGetPayment(string[] nameArr, DlrPayment payment)rn rn tryrn rn var agentService = new DlrBdAgentService(_unitOfWork);rn var paymentAgentService=new DlrPaymentAgentService(_unitOfWork);rn var agentList = agentService.GetList(o => nameArr.Contains(o.AgentName)).Select(o => new o.AgentCode, o.AgentName ).ToList();rn for (int i = 0; i < agentList.Count; i++)rn rn DlrPaymentAgent paymentAgent = new DlrPaymentAgent();rn paymentAgent.AgentCode = agentList[i].AgentCode;rn paymentAgent.AgentName = agentList[i].AgentName;rn paymentAgent.PaymentCode = "XXXXX";rn paymentAgentService.AddSave(paymentAgent);rn _unitOfWork.Commit();rn rn rn catch (Exception ex)rn rn return Content("費用申請送出失敗!原因:" + ex.Message);rn rn rn[/code]
EF包含外键表查询的问题,求助大神!!
大神们,小弟遇到一个问题,关于EF的rnrnrn通常使用EF的时候,这样的结构rnrnA表 ID NamernB表 ID, AID, Name ,AID(A表ID), A (依赖A)为A表外键rnrnA(1)->B(n) 1 对多rnrnBDContext.B.Intersect("A").ToList()rnIntersect好像写错了,意思是包含rnrn这样出来结果就会包含有A数据rnrn问题来了,假如某一条B中包含的A是空,在使用的时候就会有出现一个异常,因为BDContext已经释放rnrn当然我相信大家在使用BDContext的时候应该不会将其到处用吧rnrn这种情况怎么处理rn我想要的结果 B为空那么就返回空,而不是再次去查询数据库出现BDContext已经释放异常rnrn不知道大家明白了没有!!!
外键信息存在哪个表中?user_objects表中没有?
??
存在外键的删除问题
部门表与员工表之间存在表间关系,rnrn现在如果删除部门表里的某一个部门的时候,因为存在外键的原因无法删除,rnrn有一种办法是连同其下所有员工都删掉,rnrn可是我想要的结果是,删除某一个部门,但是其下的员工rn资料还在,rnrn这可以怎么做
怎么为已经建好的表添加外键
表的engine=MyIsamrn我用sqlyog的GUI操作,提示table engine must be innodb、PBXT、SolidDBrnrn但是直接在建表的时候指定外键,engine为myisam也照样可以
laravel已经存在的表添加表字段新增字段
我们在创建migration之后,发现需要加几个字段,官网介绍的方式是添加一个包: doctrine/dbal 官网参考: https://laravel.com/docs/5.5/migrations#modifying-columns 这里我自己找到了另外一个方式,但是只适用于添加字段。 ** Schema::create改为 Schema::table**,然后把其他已经存在的字段注释掉,如...
EF之连表操作
UserChangeRecords.Where(c => c.UserID == userid)rn .Join(ChangeRecords, a => a.RecordIndex, b => b.ID, (a, b) => new a.ChangeMoney, b.RoomID )rn .Join(GameRoomInfos, a => a.RoomID, b => b.RoomID, (a, b) => new a.ChangeMoney, b.GameNameID )rn .Join(GameInfos, a => a.GameNameID, b => b.NameID, (a, b) => new b.ComName, a.ChangeMoney )rn .GroupBy(a => a.ComName)rn .Select(a => new Summoney = a.Sum(c => c.ChangeMoney),ComName= a.Key );rn我写了个如上的EF查询,解析不出来。也查不到转成什么sql了。rn之前我碰到这些都是直接写的sql.今天有个新想法想试试,结果就EF这一块就这样了。网上关于EF连表的都只是写简单的Sql,关于join和groupby的都不是很详细
关于EF的表关系
EF的Model:A/B/C,A与B继承于C,也就说在数据库里只会有C表。如果有另外一个User表需要关联A/B两个列表,正常的想法是在UserModel里定义两个:ICollection,ICollection。rn但这样做了之后会在C表里建立两个外键与User表关联?这种需求该怎么处理呢?
EntityFramework ef框架外键导致错误!
1.在外键的位置加上 [ForeignKey(“B”)] [ForeignKey("B")] public int Aid { get { return _Aid; } set { _Aid = value; } } [ForeignKey(“A”)],A,这个是主键表的表名2.在外键类库的最下面加上 public virtua
EF中给含外键的表中的外键赋控制报错
三个表,其中一个表含有其余两个表的外键,往这个表里查数据,将外键赋为空,为啥会报错啊。。An error occurred while updating the entries. See the inner exception for details.
EF添加有外键model的问题
有两个model,一对多关系的,我想添加数据岛关系为多的这张表,这张表有个外键,我要怎么操作,让这张表新增数据,不去新增外键所对应的表。rn[code=csharp]public class JournalSortrn rn public int ID get; set; rn public string JournalSortName get; set; rn public virtual RootSort RootSorts get; set; rn public List JournalContents get; set; rn [/code]rn[code=csharp]public class RootSortrn rn public int ID get; set; rn public string RootSortName get; set; rn public List JournalSorts get; set; rn [/code]rn两个模型如下rnrn求高手解答 感激不尽rnrn
主键表和外键表的关系
如上图所示: 有message表和user两张表 user.message_id指向message表的id。 那么,这个时候,为user表建立外键fk_user_message 这个时候就说user表是外键表,message表是主键表。 删除的时候一定要先外键表(user),在删除主键表(message) 添加数据则相反,先添加主键表,再添加外键表。(或者是外键表的数据添加主键表中有的
EF对oracl数据库操作 为表新增一行 VS2012 C#语言
花了大半天对EF研究: 这里默认,数据库连接正常,EF架构已经搭建正常了: 具体搭建过程,请参见下一篇文章:  NameEntities dbEntity=new NameEntities(); //NameEntities是在建立EF架构时输入的,里面存放的是Name数据库中表的实体;    T_LOG log=new T_LOG()    //T_LOG是表名 { COLU
SQL SERVER 新增表、新增字段、修改字段 判断表是否存在
// 新增之前判断表是否存在 IF NOT EXISTS (SELECT NAME FROM SYSOBJECTS WHERE ID = OBJECT_ID('tb_MessageHistory'))    BEGIN   CREATE TABLE tb_MessageHistory(    LSH VARCHAR(36) NOT NULL  PRIMARY KEY,       -- 流
mysql 存在外键清零方法
SET FOREIGN_KEY_CHECKS=0;TRUNCATE TABLE `表名`;SET FOREIGN_KEY_CHECKS=1;
struts+hibernate+SqlServer 外键表插入外键时的问题
userName是主表userinfo的主键也是从表bloginfo的外键 rn在往bloginfo表userName字段插入时,却需要插入一个userinfo 表里的一个对象,怎么搞啊 ?高手教我~~
有外键表的修改
table1:CustomerID,rntable2:ID,Name;rn其中table1.CustomerID指向table2.ID;rn要实现的功能:用一个DBGrid显示并编辑Table1,要求CustomerID不能直接显示,而是显示出来是对应的name。保存数据时直接用Adoquery1.updateBatchrn
表加外键的限制
表中有数据、 字段类型不一致(甚至是int显示位数的区别)、为null 却是可以的。
问表的外键问题。
我有A01表和C01表,两建了约束FK_C01_A01,有级联删除,用的是SQL2005,A01表也有其他约束。rnA01.A0188是主键 C01.A0188是外键 见图rn[img=http://img.photo.163.com/nvXIC7M_OgqkQSZjQlQ2LA==/1822550474201519045.gif][/img]rn[img=http://img.photo.163.com/7X48FtHl2WXCxG2h4hmQEg==/1822550474201519043.gif][/img]rn我先INSERT into C01会出错rn后来先INSERT INTO A01 再INSERT C01 在单独SQL执行不会出错,但是两个语句放在触发器的UPDATE执行就提示以下错误rnrn语句已终止。rnINSERT 语句与 FOREIGN KEY 约束"FK_C01_A01"冲突。该冲突发生于数据库"ergotecldmistest",表"dbo.A01", column 'A0188'。rnrn不知道是什么原因??
表外键问题
User表 有一个 User_Role字段 记录 User 的角色rnRole表 为角色表 User表 中的 User_Role字段的值必须在Role 表存在(Role表中对应的字段是Role_Id)rn请教大家如何做这样的限制?
主表与外键表问题
有两张表 A(ID,Name) B(ID,AID,Name)rnrn现在是我要查询出A表的所有数据,再加一个A表对就B表有多少条数据,比如:rnrn ArnID Name rn0001 张三rn0002 李四rnrnrn BrnID AID Namern00001 0001 张三1rn00002 0001 张三2rn00003 0002 李四1rnrn这样一个表的结构,我要查询出来的数据应该是rnID Name BCountrn0001 张三 2rn0002 李四 1rnrn这样的查询语句应该怎样写,谢谢大家了
在表上存在外键,并发插入数据的情况下产生死锁,求解
[code=sql]rn-- 建表Audit,ID为主键子增rnCREATE TABLE [dbo].[Audit](rn [ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,rn [TypeName] [varchar](50) NOT NULLrn) rnGOrn-- 建表AuditFiedl, ID为主键自增rnCREATE TABLE [dbo].[AuditField](rn [ID] [int] IDENTITY(1,1) NOT NULL PRIMARY KEY,rn [AuditID] [int] NOT NULL,rn [Field1] [varchar](50) NOT NULLrn)rnrnGOrn-- 表AuditField AuditID字段设置为外键,引用Audit表的ID字段rnALTER TABLE [dbo].[AuditField] rnADD CONSTRAINT [FK_AuditFiled_Audit] FOREIGN KEY([AuditID])rnREFERENCES [dbo].[Audit] ([ID])rnGOrn[/code]rnrn接下来造一些测试数据向两张表里插入数据:rn[code=sql]rnDECLARE @audit TABLErn(rn ID int not null,rn TypeName varchar(50)rn)rnrnDECLARE @auditField TABLErn(rn AuditID int not null,rn Field1 varchar(50)rn)rnrn-- ADD TEST DATArnDECLARE @i int = 1rnDECLARE @rowCount int = 500rnWHILE @i<=@rowCountrnBEGINrn INSERT INTO @auditrn VALUES(@i, 'SomeTypeName')rn rn INSERT INTO @auditFieldrn (AuditID,Field1)rn VALUES(@i,'SomeThing')rn rn SET @i += 1rnENDrn[/code]rnrn想两张表里插入数据:rn[code=sql]begin transactionrnINSERT INTO dbo.AuditrnSELECT TypeNamernFROM @auditrnORDER BY IDrnrndeclare @lastIdentity int = @@identityrndeclare @offSet int = @lastIdentity - @rowCountrnrnINSERT INTO dbo.AuditFieldrnSELECT AuditID+@offSet AS AuditID, Field1rnFROM @auditField rnORDER BY AuditIDrncommit transaction[/code]rnrnrn在以上向两张表中插入数据的事物并发执行时发生死锁,貌似是因为外键引起的,但又分析不出为什么会导致死锁。rn执行插入操作过程中,其中一个进程得到一个错误:rnMsg 547, Level 16, State 0, Line 40rnThe INSERT statement conflicted with the FOREIGN KEY constraint "FK_AuditFiled_Audit". The conflict occurred in database "MyDB", table "dbo.Audit", column 'ID'.rn但想不通为什么会有这个错误。说明一下,在Audit表上没有触发器什么的。另一个进程被强制干掉,被请大神帮忙分析一下,急求答案。rn
关于表的外键
[size=16px]A表rn(id,name)rnrnB表 rn(id,address)rnrnB 表的 id 是A 表的外键来的.rnrnA表 的 id 是唯一,主键的.rnrn但是 B 表的 id insert 的时候 是 有外键 约束.但不是唯一的约束??rnrn就是可以插入重复的值? 外键 是不是都要 另外定义一个 unique 约束?才能唯一?[/size]rnrnrnrn
表的主键,外键
请问达人:rn 范式上要求表要有主键外键,这里的主外键都是物理主键(即有实际建立的键)么?rn 经常看到表没有主外键,只是系统约定,某张表的某几个字段和另一张表的某几个字段构成主外键的关系。这样做,有什么好处呢?rn望赐教。
关于表设计问题 ----- 外键
你们一般是用什么字段作外键的?rn我们公司用自增量,但这样存在一个问题。rnrn例如:rnrn表 PartNornrnPartNoID int IDENTITY (1, 1) NOT FOR REPLICATION NOT NULL rnPartNo varchar (20)rnrn我们一直用PartNOID 作外键,这样经过导入导出,或者删除之后再增这个产品,在其它表中就找不到此产品编号。我认为,是不是应该拿PartNo作外键。rn你们通常是怎么做的?rnrn谢谢!!rnrnrnrnrnrn
相关热词 c# 线程顺序 c#昨天当前时间 c# 多进程 锁 c#mysql图片存取 c# ocx 委托事件 c# 读取类的属性和值 c# out 使用限制 c#获取url的id c#怎么进行分页查询 c# update 集合