Entity Framework 4.1 с существующими классами и существующими таблицами - PullRequest
1 голос
/ 20 марта 2012

У меня есть большой набор классов, реализующих бизнес-логику.У большинства есть метод .Load, который использует простой старый ADO.net для чтения значений с Sql Server, который я написал вручную за эти годы.Все это предшествует Linq2Sql и EF.

Теперь я хочу обновить библиотеку классов, чтобы использовать Entity Framework, но я бы хотел сделать это как можно безболезненнее.Я узнал, что EF может определять имена столбцов и ключей по именам свойств в моих классах, но у моих классов есть много свойств, которые не соответствуют именам столбцов, и некоторые свойства, которые не соответствуют именам столбцов базы данных.Я бы предпочел не использовать .Ignore () каждого из этих свойств (и всегда помнить .Ignore () любые будущие свойства) и .HasColumnName () все различия.

Какой самый простой способ использованияEF с существующими таблицами и существующими классами, так что я могу делать минимальные отображения и при этом использовать DbContext для .Find () сущности, SaveChanges () и всех других приятных строго типизированных вещей, которые EF поддерживает, не просматривая все мои бизнес-классы вручную ианнотируя, какие свойства включать?

Например, я ожидаю, что смогу db.Customers.Find (123) и создать экземпляр Customer, выбрать * из клиентов, где CustomerID = 123и сопоставьте столбцы, которые действительно существуют, со свойствами, которые действительно существуют, насколько это возможно, и предоставьте мне готовый экземпляр Customer, а затем я могу при необходимости комментировать любые различия. Возможно ли это, или я слишком много спрашиваюEF?

Возможно, есть более умный DbContext, который приложит все усилия, чтобы отобразить свойства, чтобы я могиспользовать все мои существующие бизнес-классы?Может быть, я должен рассмотреть какой-нибудь другой ORM?

Ответы [ 2 ]

1 голос
/ 20 марта 2012

Попробуйте: создайте модель данных (.edmx) из вашей базы данных.отредактируйте модель, добавив свойство и процедуры вашего класса, которые вы хотите добавить в базу данных.Наконец, обновите вашу базу данных из вашей модели (.Edmx), выбрав только те таблицы и процедуры, которые у вас есть.Вы можете посмотреть эти уроки http://msdn.microsoft.com/en-us/data/gg685494 http://msdn.microsoft.com/en-us/data/gg685489

0 голосов
/ 20 марта 2012

EF4 «Code First» позволяет вам при необходимости переопределять правила отображения постоянства базы данных по умолчанию и настраивать альтернативные способы сопоставления ваших классов с базой данных.

Есть несколько способов включить это. Один из самых простых подходов - переопределить метод «OnModelCreating», определенный в базовом классе DbContext:

public class YourContext : DbContext
{
    protected override void OnModelCreating(ModelBuilder modelBuilder)
    {
        // Mapping
    }
}

Вы по-прежнему можете искать свои объекты по первичному ключу, используя Find:

var unicorn = context.Unicorns.Find(3);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...