#entity-framework
#entity-framework
Вопрос:
Я использую подход code first в своем проекте. В проекте у меня есть классы с атрибутом MetadataType, который я не использую в своей модели EF. Класс с метаданными имеет несколько постоянных общедоступных полей (в дополнение к полям основного типа). Теперь, когда я попытался запросить EF, он выдал исключение, что в классе метаданных поля не сопоставлены… подробнее см. Ниже
class M1
{
int Id;
string Name
}
class M2
{
int Id;
DateTime Date
}
[MetadataType(typeof(PageOFSRevenueMetadata))]
class NotRelatedToModel
{
int Prop1;
int Prop2;
}
class PageOFSRevenueMetadata
{
public const string RuleSet1 = "r1";
public const string RuleSet2 = "r2";
// Data Vaidation Attrs...
int Prop1;
int Prop2;
}
В моем контексте у меня есть отображение только для M1 и M2. В БД существует таблица с именем ‘NotRelatedToModel’, но я не хочу использовать ее в своей модели. Я использую EF 6
Теперь, когда я пытаюсь выполнить запрос соединения для M1 и M2, он выдает исключение ниже
‘NotRelatedToModel’ содержит следующие неизвестные свойства или поля: RuleSet1, RuleSet2. Пожалуйста, убедитесь, что имена этих членов совпадают с именами свойств в основном типе
Я могу переместить эти статические поля в другое место, и, похоже, это работает, но я хотел бы знать, почему это произошло? Как работает отображение EF code first?
Заранее спасибо
Комментарии:
1. Есть ли какое-либо свойство типа NotRelatedToModel в ваших сопоставленных классах?
2. Нет, их нет, фактически история следующая: у меня есть основная сборка с подходом, ориентированным на базу данных, я создал другую сборку (плагин), в которой я создал контекст code first. В этом плагине я должен использовать основную (DB first) модель и мой плагин enity, но они не пересекаются. P.S. Code first не обновляется DB (я обновил его вручную с помощью скриптов) Мне просто нравится гибкость кода в первую очередь