2011-03-03 136 views
0

我有以下数据库结构。LINQ到实体保存

enter image description here

我已经在数据库中保存Buyer。我有buyer id。我必须在数据库中保存买家的联系信息,因为我在数据库中保存联系人,我还需要在buyercontact表中保存buyercontact。当我尝试在edmx文件中添加BuyerContact表时,Visual Studio 2010将不允许我这样做。

如何在buyercontact表中保存信息?请帮忙。

他们说,如果适当的关系保持在数据库/ EDMX,buyercontact将被保存到数据库,以及当我的洞穴“接触”。我通过互联网搜索,我也发现了类似的问题,但我无法理解。

请帮忙。做我必须写一些特殊的代码保存BuyerContact

当我写这篇文章的代码保存buyercontact一起接触,我得到错误

不能在 插入重复键dbo.Buyer

Contact objContact = new Contact(); 
objContact.FirstName = firstName; 
objContact.MiddleName = middleName; 
objContact.Lastname = lastName; 
objContact.CreatedDate = DateTime.Now; 
objContact.AddressId = gAddressId;      

var buyer = _buyerRepository.GetSingle(x => x.BuyerId == BuyerID); 
objContact.Buyer = buyer; 

_contactRepository.Add(objContact); 
_contactRepository.Save() 

如果我删除objContact.Buyer = buyer;,则联系人信息已成功保存,但buyercontact未保存。现在我的问题是,只要我有与买方联系的联系人,我也需要将它保存在BuyerContact表中。

我已经通过帖子here,但O无法理解。我已经使用通用数据库操作(如CRUD)的通用Linq-to-SQL存储库。

请帮帮忙,谢谢

回答

0

试试这个,而不是:

objContact.Buyer = buyer; 
_contactRepository.Add(objContact); 
_contactRepository.Save() 

替换为:

buyer.Contacts.Add(objContact); 
_buyerRepository.Save(); 

也假设你使用相同的上下文对象的所有仓库的工作单位