Модельный вопрос в MVC3 - PullRequest
0 голосов
/ 15 июня 2011

У меня есть основной вопрос в MVC3.Я начинаю выписывать модели для моего проекта.Я понимаю, что модели в каком-то смысле являются таблицами на уровне реляционной базы данныхКак мне указать атрибут класса (поле в таблице) как FK.Я знаю квалификатор [Key] для PK.Например:

 public class Class1
{
    [Key]
    public int MyID { get; set; }
    public string myDes {get;set;}

}

В приведенном выше примере MyId является PK в Class1.Как использовать этот MyId в другом классе и использовать его в качестве FK.

РЕДАКТИРОВАТЬ: Это правильно?

public class Class2

{[Key] public int SecondID {get;задавать;}

[ForeignKey("MyId")]
public string MyId{ get; set; }

}

Class1 и Class2 находятся в двух разных файлах .cs.

1 Ответ

1 голос
/ 15 июня 2011

Сохранение экземпляра связанной записи (или списка связанных записей для отношений «один ко многим» или «многие ко многим»).

public MyOtherObject MyObject { get; set; }

Это может измениться в зависимости от того, как вы сохраняете данные в БД, но в целом это ОО-способ сделать это.

Я делаю это, используя EF 4.1 Code First, и получающаяся БД содержит внешний ключ в связанную таблицу.


Отредактируйте в ответ на ваш последний комментарий (относительно атрибута ForeignKeyAttribute), чтобы я мог использовать лучшее форматирование кода в ответе:

Согласно записи MSDN для ForeignKeyAttribute (http://msdn.microsoft.com/en-us/library/system.componentmodel.dataannotations.foreignkeyattribute(v=vs.103).aspx#Y198), имя, которое вы передаете в ForeignKeyAttribute, является именем соответствующего свойства навигации или свойства внешнего ключа в том же классе.

Например:

public class MyClass
{
    // This is a "Navigation Property"
    public MyOtherClass ForeignObject { get; set; }

    // This is a "Foreign Key Property"
    [ForeignKey("ForeignObject")]
    public int ForeignObjectID { get; set; }
}

Атрибут ForeignKey в приведенном выше фрагменте кода идентифицирует свойство ForeignObjectID как внешний ключ для свойства ForeignObject. Вам все еще понадобится экземпляр чужого объекта в вашем классе.

Вы также можете использовать атрибут ForeignKey в свойстве навигации, просто передайте имя свойства внешнего ключа атрибуту:

public class MyClass
{
    // This is a "Navigation Property"
    [ForeignKey("ForeignObjectID")]
    public MyOtherClass ForeignObject { get; set; }

    // This is a "Foreign Key Property"
    public int ForeignObjectID { get; set; }
}
...