2013-07-19 5 views
1

извините за мой английский. Я младший разработчик. У меня есть один вопрос в ASP.Net MVC 4 структура сущности.ASP.NET MVC 4 | Entity Framework

public class ClientContext:DbContext 
{ 
    public DbSet<Client> Clients { get; set; } 


} 

Клиенты хранятся в таблице «Клиенты». но у меня также есть одна таблица «GoodClients». И в разных терминах мне нужно вставить Client в одну из таблиц. Могу ли я использовать этот ClientContext? Что мне нужно?

ответ

1

Я бы порекомендовал вам добавить булеву маркер Client класса - IsGoodClient, так что вы можете работать с клиентской таблицы, как это:

var goodClient = clientContextInstance.Clients.Where(e=>e.IsGoodClient); 
var badClients = clientContextInstance.Clients.Where(e=>!e.IsGoodClient); 

Для преобразования клиента от «GoodClient» до «BadClient» вы можете сделать так:

var goodClient = clientContext.Clients.First(e=>e.IsGoodClient && e.Id == 1); 
goodClient.IsGoodClient = false; 
clientContextInstance.SaveChanges(); 

Так что вам не нужно, чтобы сделать новую таблицу для хранения GoodClients

EDIT

Другой способ заключается в добавлении GoodClients dbSet в контекст:

public class ClientContext:DbContext 
{ 
    public DbSet<Client> Clients { get; set; } 
    public DbSet<GoodClient> GoodClients { get; set; } 
} 

Но это ужасная идея, потому что вы будете хранить одни и те же данные в разных таблицах.

+0

спасибо, Maris. Но я иду вторым путем. Я прав? Мне нужен класс GoodClient и используйте Attribute - [Таблица («GoodClients»)]? – Aydar

+0

Это ваш выбор, но я настоятельно рекомендую использовать первый способ. Если вы будете использовать второй способ, у вас будет больше проблем в будущем, например, компиляция проблемы с двумя объектами или дублирование записи объекта в 2 таблицах. Почему вам не нравится первый путь? – Maris

+0

да, вы можете сделать это так. Но на самом деле атрибут [Таблица («GoodClients»)] здесь избыточна. EF отобразит ваш DbSet в таблицу GoodClients. – Maris

Смежные вопросы