2013-12-18 31 views
1

當我正在保存belwo CounterpartyFrequency實體時,它試圖添加附加的legalEntity。我如何防止這種情況。我只需要交易對手頻率表來插入與CounterpartyFrequencyId和LegalEntityId。 PLZ分享您的想法實體框架試圖保存外鍵表以及實體保存。如何防止呢?

[DataContract] 
    public class CounterpartyFrequency : EntityBase 
    { 
     [DataMember] 
     [Key] 
     public int CounterpartyFrequencyId { get; set; } 

     [DataMember] 
     public string LegalEntityId { get; set; } 

     [DataMember] 
     [ForeignKey("LegalEntityId")] 
     public LegalEntity LegalEntity { get; set; } 
    } 

實體我要救高於

using (var dbContext = ConfigurationContext.CreateContext(dbConnection)) 
        { 
         foreach (var counterpartyFrequency in counterpartyFrequencies) 
         { 


          if (
           dbContext.CounterpartyFrequencies.Any(
            (x) => x.CounterpartyFrequencyId == counterpartyFrequency.CounterpartyFrequencyId)) 
          { 
           dbContext.CounterpartyFrequencies.Attach(counterpartyFrequency); 
          } 
          else 
          { 
           dbContext.CounterpartyFrequencies.Add(counterpartyFrequency); 
          } 
         } 

         var noc = dbContext.SaveChanges(); 
        } 

回答

2

你需要讓LegalEntity虛擬:

[DataContract] 
public class CounterpartyFrequency : EntityBase 
{ 
    [DataMember] 
    [Key] 
    public int CounterpartyFrequencyId { get; set; } 

    [DataMember] 
    public string LegalEntityId { get; set; } 

    [ForeignKey("LegalEntityId")] 
    public virtual LegalEntity LegalEntity { get; set; } 
} 
+0

但仍然給出了錯誤「System.Data .Entity.Infrastructure.DbUpdateException:更新條目時發生錯誤,詳情請參閱內部異常---> System.Data.UpdateException:更新條目時發生錯誤,請參閱內部異常以獲取詳細信息。 ---> System.Data.SqlClient.SqlException:不能將值NULL插入'IsAffiliate'列,'common.LegalEntity'列;列不允許有空值。 INSERT失敗。「 – user2613883

+0

謝謝,我使legalentity虛擬,當傳遞null,問題解決 – user2613883