C# 实体框架和MS Dynamics CRM插件

C# 实体框架和MS Dynamics CRM插件,c#,entity-framework,plugins,dynamics-crm,C#,Entity Framework,Plugins,Dynamics Crm,是否可以在CRM插件中使用实体框架 这是我的DbContext和DbConfiguration: [DbConfigurationType(typeof(Config))] public class Context : DbContext { public Context(string nameOrConnectionString) : base(nameOrConnectionString) { Database.SetInitializer&l

是否可以在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);
    }
}
[DbConfigurationType(typeof(Config))]
公共类上下文:DbContext
{
公共上下文(字符串名称或连接字符串)
:base(名称或连接字符串)
{
SetInitializer(新的DropCreateDatabaseIfModelChanges());
}
公共DbSet ContactSet{get;set;}
模型创建时受保护的覆盖无效(DbModelBuilder modelBuilder)
{
基于模型创建(modelBuilder);
modelBuilder.Entity().Property(i=>i.Id).HasDatabaseGeneratedOption(DatabaseGeneratedOption.Identity);
}
}
公共类配置:DbConfiguration
{
公共配置()
{
SetDefaultConnectionFactory(新的System.Data.Entity.Infrastructure.SqlConnectionFactory());
SetProviderServices(SqlProviderServices.ProviderInvariantName,SqlProviderServices.Instance);
}
}
在插件中,当我尝试在ContactSet上执行CRUD操作时,我得到错误:
System.Data.Entity.Migrations.History.HistoryRepository'的类型初始值设定项引发异常。

我在控制台应用程序中测试了这段代码,它可以正常工作

如有任何建议,我们将不胜感激

更新


联系人是EF模型而不是CRM实体。

此问题的解决方案是将数据库初始值设定项设置为null

Database.SetInitializer<Context>(null);
Database.SetInitializer(null);

您知道SDK提供的早期绑定生成吗?有一个免费的XrmToolbox工具,名为,它使用SDK的功能生成早期绑定的对象,您可以在代码中使用,并且它有一些很好的特性,可以最大限度地减少单独使用SDK的功能所带来的痛苦。我极力推荐。你想做什么?db配置在你的插件代码中做了什么?我试图在不同的数据库中保存一些数据。我需要dbconfiguration类,因为在插件代码中我不能使用配置文件。为什么不构建一个可以通过rest调用的api呢。似乎比尝试在插件中完成所有这些事情要容易得多。谢谢你,很高兴你忽略了所有其他的评论并解决了这个问题。你是我今天的英雄@user7!