2016-04-24 18 views
1

Ist es möglich, Entity Framework im CRM Plugin zu verwenden?Entity Framework und MS Dynamics CRM Plugin

Das ist mein DbContext und 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); 
    } 
} 

in der Plugin, wenn ich versuche CRUD-Operationen auf ContactSet auszuführen ich Fehler: The type initializer for 'System.Data.Entity.Migrations.History.HistoryRepository' threw an exception.

ich diesen Code in Konsolenanwendung getestet und es funktioniert.

Alle Ratschläge oder Vorschläge werden sehr geschätzt.

UPDATE

Kontakt ist EF Modell nicht CRM-Entität.

+1

warum, warum, warum, warum –

+1

Sind Sie der frühen gebundenen Generation bewusst das SDK über die? Es gibt ein kostenloses XrmToolbox-Werkzeug namens [Early Bound Generator] (https://github.com/daryllabar/DLaB.Xrm.XrmToolBoxTools/wiki/Early-Bound-Generator), das die Fähigkeiten des SDK nutzt, um früh gebundene Objekte zu erzeugen Verwenden Sie in Ihrem Code, und es hat einige großartige Funktionen, die die Schmerzen minimieren, die auftreten würden, wenn Sie die SDK-Funktionen allein verwenden würden. Ich empfehle es sehr. – Polshgiant

+0

Was versuchst du zu tun? Was macht die DB-Konfiguration in Ihrem Plugin-Code? –

Antwort

0

Die Lösung für dieses Problem war Datenbank initializer auf null festgelegt

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