2017-01-06 72 views
0

我已經通過的NuGet最近升級EF但現在當我的代碼將訪問日誌對象設置它拋出上述異常..多個對象集每種類型不支持? -

該錯誤提示對象集日誌和Fulfillment.Model.IUnitOfWork.Logs '都可以包含'Fulfillment.Model.Log'類型的實例。

我最近安裝了ninject遲髮型,我想知道如果有什麼關係呢?

這裏是我的datacontext/UOW

public interface IUnitOfWork 
{ 
    IDbSet<Log> Logs { get; } 
    IDbSet<Order> Orders { get; } 
    void Commit(); 
} 

public partial class FulfillmentEntities : DbContext, IUnitOfWork 
{ 
    public FulfillmentEntities() 
     : base("name=FulfillmentEntities") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

    public DbSet<Log> Logs { get; set; } 
    public DbSet<Order> Orders { get; set; } 

    IDbSet<Log> IUnitOfWork.Logs 
    { 
     get { return Logs; } 
    } 

    void IUnitOfWork.Commit() { 
     SaveChanges(); 
    } 

    IDbSet<Order> IUnitOfWork.Orders 
    { 
     get { return Orders; } 
    } 
} 

}

任何意見將不勝感激。

+0

這將是知道老有用和升級EF版本。 –

+0

完全從issuem分開但是的DbContext工作單元。我不瞭解你的IUnitOfWork的價值。 – Fran

回答

1

你有Logs暴露兩次:

public DbSet<Log> Logs { get; set; } 

IDbSet<Log> IUnitOfWork.Logs 
{ 
    get { return Logs; } 
} 

(和同樣的問題與Orders

試着改變你的代碼:

public partial class FulfillmentEntities : DbContext, IUnitOfWork 
{ 
    public FulfillmentEntities() 
     : base("name=FulfillmentEntities") 
    { 
    } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     throw new UnintentionalCodeFirstException(); 
    } 

    public IDbSet<Log> Logs { get; set; } 

    public IDbSet<Order> Orders { get; set; } 


    public void Commit() 
    { 
     SaveChanges(); 
    } 

} 
+0

感謝您的快速回復! 由於代碼已超過800天,並且升級後OnModelCreatingMethod也被調用並且正在拋出UnintentionalCodeFirstException ... 有關如何在某種程度上簡化它的任何建議?它是通過TT模板 – TheLearningDev

+0

從你升級的是什麼版本,什麼什麼是新版本最初產生?您使用的EDMX文件 - – Alex

+0

您好我從4升級到5 – TheLearningDev

相關問題