实体框架多对多插入我有三个表。命名:Merchants、MerchantNumberX、Numbers(许多其他实体使用数字——这只是一个例子)。商家表看起来像:MerchantGuid,MerchantNameNumbers表看起来像:NumberGuid,PhoneNumber外部参照表看起来像:MerchantGuid,NumberGuid我知道在实体框架中我可以这样做:varnewNumber=newNumber{NumberGuid=Guid.NewGuid(),电话号码="55555555555"};Merchants.Numbers.Add(newNumber);这会将关系插入到两个表实体之间的外部参照表中。但是,有没有其他方法可以在没有Merchant对象的情况下将这些表“关联”在一起?例如:varnewNumber=newNumber{NumberGuid=Guid.NewGuid(),PhoneNumber="4444444444"};newNumber.MerchantGuid=alreadyKnownMerchantGuid;//这不可用,顺便说一下,这只是我们在多对多关系中寻找的东西的一个例子。但是,newNumber给了我一个“商家”属性,它只是递归地重复。我们重写了很多代码,想知道是否有一种快速的方法来建立这种关系,而不必调用数据库来获取Merchant对象,因为我们已经有了一个有效的MerchantGuid。有人帮忙吗?但是,有没有其他方法可以在没有Merchant对象的情况下将这些表“关联”在一起?与EF的多对多关系是独立的关联,这意味着您的模型中没有可用的外键属性。您需要使用两个集合来操纵关系。这是唯一的方法。但是,请看下一点......是否有一种快速的方法来建立这种关系,而不必调用数据库来获取Merchant对象,因为我们已经有了一个有效的MerchantGuid。要创建关系,您不需要从数据库中加载现有的Merchant实体。您可以创建一个“存根”实体,并将键属性设置为有效的MerchantGuid,然后将其附加到上下文。对于EF,这是一个状态为Unchanged的??实体,其行为就像从数据库加载一样:varnewNumber=newNumber{NumberGuid=Guid.NewGuid(),PhoneNumber="55555555555"};varmerchant=newMerchant{MerchantGuid=alreadyKnownMerchantGuid,Numbers=newHashSet()};context.Merchants.Attach(商家);merchant.Numbers.Add(newNumber);context.SaveChanges();这里不涉及数据库查询。SaveChanges将在连接表中创建一个新的数字记录和一个新的关系记录。以上就是C#学习教程:实体框架多对多插入分享的全部内容。如果对你有用,需要进一步了解C#学习教程,希望大家多多关注。本文收集自网络,不代表立场。如涉及侵权请点击右侧联系管理员删除。如需转载请注明出处:
