Вопрос

Я использую EF4, и у меня есть две сущности, которые я хочу сопоставить такой же POCO. Анкет Я не уверен, как я могу это сделать.

Сущность 1 → Foo (это представляет собой таблицу в дм)
Поко → Фу

Entity 2 → FOOVIEW (это представляет собой представление FOOVIEW в БД)
Поко → Фу

Я понимаю, что мне нужно сделать что -то вроде

IObjectSet<Foo> _foos = CreateObjectSet<Foo>();

// Note spelling of the Entity.
IObjectSet<Foo> _foosView = CreateObjectSet<Foo>("FooViews"); 

Но когда я пробую это, это компилируется, но это терпит неудачу с следующим исключением:

System.ArgumentException: System.ArgumentException: указанный тип объекта, 'myProject.core.foo', не соответствует типу 'entityframe.sqlservermodel.foosview' из EntitySet 'foosViews'.

Какие-либо предложения?

Это было полезно?

Решение

Вот контрольный список вещей, которые нужно искать:

  1. Ваш Модель хранения должен иметь:
    1. Два EntitySets: Foo а также FooView
    2. Два EntityTypes: Foo а также FooView
  2. Ваш Концептуальная модель должен иметь:
    1. Два EntitySets: Foo а также FooView - оба с EntityType установлен в ModelName.Foo
    2. Один EntityType: Foo
  3. Ваш Картирование должно быть два EntitySetMappings:
    1. Foo с одним EntityTypeMapping ("Modelname.foo") с одним MappingFragment ("Foo")
    2. FooView с одним EntityTypeMapping ("Название модели.Фу") с одним MappingFragment ("Fooview")

Вы должны новым, чтобы выполнить следующее:

Foo foo = new ModelEntities()
    .CreateObjectSet<Foo>("FooView")
    .First();

Вы можете дать себе старту, выполнив следующее:

  1. Добавлять Foo а также FooView к вашей модели
  2. в Mapping Details из Foo нажимать Add a Table or View и выберите FooView
  3. Удалить FooView от вашей модели
  4. Сохраните модель и откройте ее в редакторе XML
  5. (pre-rtm) Находить <EntityType Name="FooView"> в <StorageModels> и удалить все неправильные записи из <Key> (это должно соответствовать <EntityType Name="Foo">)
  6. Удалить <EntityTypeMapping Name="IsTypeOf(Foo)" /> а также <EntityTypeMapping Name="IsTypeOf(FooView)" /> (Они причинили мне ошибки)

По состоянию на бета 2 реализация выше

Другие советы

В nhibernate следует решить это с помощью прогнозов. Итак, я думаю, что в рамках сущности должно быть что -то подобное. Я немного погуглил, и я пришел на это:

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top