2016-04-24 176 views
1

是否可以在CRM插件中使用實體框架?實體框架和MS Dynamics CRM插件

這是我的DbContext和DbConfiguration:

[DbConfigurationType(typeof(Config))] 
public class Context : DbContext 
{ 
    public Context(string nameOrConnectionString) 
     : base(nameOrConnectionString) 
    { 
     Database.SetInitializer<Context>(new DropCreateDatabaseIfModelChanges<Context>()); 
    } 

    public DbSet<Contact> ContactSet { get; set; } 

    protected override void OnModelCreating(DbModelBuilder modelBuilder) 
    { 
     base.OnModelCreating(modelBuilder); 

     modelBuilder.Entity<Contact>().Property(i => i.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity); 
    } 
} 

public class Config : DbConfiguration 
{ 
    public Config() 
    { 
     SetDefaultConnectionFactory(new System.Data.Entity.Infrastructure.SqlConnectionFactory()); 
     SetProviderServices(SqlProviderServices.ProviderInvariantName, SqlProviderServices.Instance); 
    } 
} 

的插件,當我嘗試在ContactSet執行CRUD操作,我得到錯誤: ​​

我測試的控制檯應用程序的代碼和它的作品。

任何意見或建議將不勝感激。

更新

聯繫人是EF模型而不是CRM實體。

+1

爲什麼爲什麼爲什麼爲什麼 –

+1

你知道的早期綁定生成可通過SDK?有一個名爲[Early Bound Generator]的免費XrmToolbox工具(https://github.com/daryllabar/DLaB.Xrm.XrmToolBoxTools/wiki/Early-Bound-Generator),它使用SDK的功能來生成早期綁定對象,您可以在您的代碼中使用,它具有一些很棒的功能,可以最大限度地減少您單獨使用SDK功能時可能遇到的痛苦。我強烈推薦它。 – Polshgiant

+0

你想做什麼?你的插件代碼中的數據庫配置是什麼? –

回答

0

這個問題的解決方案是設置數據庫初始化爲null

Database.SetInitializer<Context>(null);