1

Можно ли расширить класс созданного класса Entity Framework 6.1.3?Как расширить структуру Entity Framework 6.1.3 сгенерированного класса?

У меня есть существующая база данных, к которой я создал ADO.NET Entity Data Model, которая, в свою очередь, Visual Studio 2015 сгенерировала набор классов.

public partial class WebApplication1Entities : DbContext 
{ 
    public WebApplication1Entities() 
     : base("name=WebApplication1Entities") 
    { 
    } 

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

можно вручную переопределить WebApplication1Entities разрешить динамическое подключение во время выполнения, как так:

public WebApplication1Entities(string connectionString) : base(connectionString) 
    { 
    } 

Это, однако, включает в себя редактирование класс, Visual Studio 2015 был создан, но должен я хотел бы обновить ADO.NET Entity Data Model в будущем, Visual Studio перезапишет любые ручные изменения, которые я внес в предыдущий сгенерированный класс, и я вернусь к квадрату, чтобы вручную отредактировать созданный класс.

Возможно ли создать класс-помощник или что-то подобное, чтобы расширить существующий WebApplication1Entities : DbContext и разрешить добавление нового перегруженного метода, а также наследовать существующие методы генерируемого класса Visual Studio 2015, такие как виртуальные DbSets.

Любая помощь будет высоко ценится :-)

+0

Поскольку это частичный класс, где вы помещаете свои «ручные изменения» - вы помещаете их в один и тот же файл, который сгенерирован, или в отдельный файл? –

ответ

2

Как вы видите в объявлении

public partial class WebApplication1Entities : DbContext 

этот класс partial.

Таким образом, вы можете создать другой * .cs файл и поместить код там (использовать то же пространство имен!):

public partial class WebApplication1Entities 
{ 
    public WebApplication1Entities(string connectionString) : base(connectionString) 
    { 
    }   
} 

Так, когда дизайнер перезаписывает файл, содержащий «оригинальный» класс, ваш код остается нетронутым.

More около partial классы и методы.

+0

Не могу поверить, что все было так просто, спасибо вам большое, отлично работает :-) – iggyweb