2016-04-24 105 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);