Я пытаюсь объявить первичный ключ для модели сущностей , которая в конечном итоге будет использоваться ASP.NET MVC3 для создания класса Controller, поэтому я декорирование значения атрибутом [Key]
:
Foobar.cs
using System.ComponentModel.DataAnnotations;
public class Foobar
{
[Key]
public string Foo { get; set; }
public string Bar { get; set; }
}
FoobarDbContext.cs
using System.Data.Entity;
public class FoobarDBContext : DbContext
{
public DbSet<Foobar> Foobars { get; set; }
}
Что при попытке создать вышеупомянутый Контроллер приводит к следующей ошибке:
---------------------------
Microsoft Visual Studio
---------------------------
Unable to retrieve metadata for 'Dotnet.Samples.AspNetMvc.Models.FoobarDBContext'.
One or more validation errors were detected during model generation:
- System.Data.Edm.EdmEntityType: : EntityType 'Foobar' has no key defined.
Define the key for this EntityType.
- System.Data.Edm.EdmEntityType: : EntityType 'FoobarDBContext' has no key defined.
Define the key for this EntityType.
- System.Data.Edm.EdmEntitySet: EntityType: EntitySet __Foobars__
is based on type ?Foo? that has no keys defined.
- System.Data.Edm.EdmEntitySet: EntityType: EntitySet __FoobarDBContexts__
is based on type __FoobarDBContext__ that has no keys defined.
---------------------------
OK
---------------------------
Любое предложение будет по достоинству оценено. Большое спасибо заранее
UPDATE
Согласно Аннотации данных в Entity Framework и Code First
KeyAttribute используется, чтобы указать, что
свойство / столбец является частью основного
ключ сущности и относится к
только скалярные свойства .
Поэтому, я думаю, мне нужно было бы пойти дальше и создать «несемантический» идентификатор, такой как FoobarID
, чтобы воспользоваться преимуществами функциональности генерации кода.