2012-01-17 2 views
0

Я довольно новичок в EDM, написав довольно много материалов ADO.Net в прошлом. У меня есть три таблицы:Базы данных SQL, модели данных сущностей и от 1 до 1 сущностей

**Product:** 
Prod_ID - PK 

**Product_MaxLoan** 
Prod_ID - PK 

**Product_MinLoan** 
Prod_ID - PK 

Эти таблицы, размещаемые в MS SQL Server 2005, не имеют ФКС или ограничения не настроены еще, они должны иметь смысловую 1 к 1 отношения. Например, в каждой строке продукта с идентификатором 1 будет строка в Product_MaxLoan и Product_MinLoan, каждая с идентификатором 1.

В Visual Studio 2010 я хочу правильно настроить EDM так, чтобы мощность устанавливается на 1 до 1. У меня ранее были ограничения FK для таблиц и приведенные ниже настройки, однако это позволило бы использовать только мощность 0..1 (для обеспечения, я полагаю, того факта, что Продукт может не иметь Product_MaxLoan или Product_MinLoan).

**Product:** 
Prod_ID - PK 

**Product_MaxLoan** 
ID - PK 
Prod_ID - FK 

**Product_MinLoan** 
ID - PK 
Prod_ID - FK 

Вопросы:

  • Какой совет вы могли бы дать для настройки этих таблиц в SQL Server 2005? Для отношения 1 к 1 в EDM вы бы настроили FK?
  • Можете ли вы настроить отношения PK в SQL 2005, которые EDM будет читать при импорте из базы данных?
  • Продукт содержит около 300 объектов, поэтому содержащий все данные в одной таблице будет плохой нормализацией базы данных (следовательно, много 1 - 1 таблиц). Лучше ли было бы поместить все эти в один класс EDM? Моя реакция кишки заключается в том, чтобы сломать ее вниз, так как она структурирована в БД (это мое наследие ADO подходит к выходу), имея класс для каждой логической части продукта .

Ваш совет будет оценен.

С наилучшими пожеланиями,

Марк

ответ

0

В базе данных используют эту конфигурацию:

**Product:** 
Prod_ID - PK 

**Product_MaxLoan** 
Prod_ID - PK, FK (to Product) 

**Product_MinLoan** 
Prod_ID - PK, FK (to Product) 

Это заставит отношение один к одному на уровне базы данных, а также в EF. Само отношение будет 1 - 0..1 (Product может существовать без MaxLoan и MinLoan), поскольку реальный 1: 1 не может существовать в базе данных. Реальный 1: 1 требует, чтобы оба объекта всегда существовали = вы не можете вставить первое, если второе не существует, и вы не можете вставить второе, если первое не существует. Как вы вставляете их, не отключая ссылочную целостность?

+0

Здравствуйте, Ladislav, Спасибо за этот совет, это имеет смысл. С точки зрения EDM, вы бы предположили, что у меня есть все 300 свойств в одном классе? Или разбить его на более мелкие классы? Еще раз спасибо. отметка – MagicalArmchair

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