2015-02-02 3 views
0

Я пытаюсь подключиться к базе данных SQL Server из своего приложения MVC. Я продолжаю получать эту ошибку:System.Data.Entity.Edm.EdmEntityType:: EntityType 'MyRecord' не имеет определенного ключа. Определите ключ для этого EntityType

System.Data.Entity.Edm.EdmEntityType:: EntityType 'MyRecord' не имеет определенного ключа. Определите ключ для этого EntityType. Я googled это и founf, что эта ошибка возникает, когда никто не определил get и задал для ключа внутри класса. Это неверно в моем случае, поскольку я определил их. Ниже мой пример класс:

[Table("DataRecords")] 
public class MyRecord 
{ 
    public string RecordID { get; set; } 
    public string RecordDesc { get; set; } 
    public float PageNo { get; set; } 

} 

У меня также есть MyRecordContext класс:

public class MyRecordContext : DbContext 
{ 
    public DbSet<MyRecord> MyRecords { get; set; } 
} 

и контроллер с "Подробности" действия:

public ActionResult Details(string _id) 
{ 
     MyRecordContext rc = new MyRecordContext(); <-- ERROR HERE 

     MyRecord r = rc.MyRecords.Single(x => x.RecordID == _id); 

     return View(r); 
    } 

Я называю это так: http://localhost:57802/Home/Details/01-019-2-1111-00-00

Может ли кто-нибудь помочь в диагностике проблемы?

ответ

1

Ошибка указывает на точную проблему. На вашем объекте нет ключа. Entity Framework использует определенные соглашения, чтобы автоматически расшифровывать, какое свойство должно быть основным ключом, однако, поскольку ваш объект здесь имеет имя MyRecord, EF будет искать свойство с именем что-то вроде MyRecordID, а не RecordID. Если ваш класс и/или имя свойства не соответствует конвенции, то вы должны сказать EF Явно, что использовать:

[Key] 
public string RecordID { get; set; } 

UPDATE

Если у вас есть составной ключ, то вы просто также необходимо указать порядок колонок:

[Key, Column(Order = 1)] 
public int Key1 { get; set; } 

[Key, Column(Order = 2)] 
public int Key2 { get; set; } 
+0

Благодарим за быстрый отклик! Что мне делать, если мой первичный ключ является составным? – ElenaDBA

+0

См. Обновление выше. –

+0

Я попытался добавить атрибут [Ключ], и ошибка: «Тип или пространство имен« Ключ »не найден» – ElenaDBA

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