2013-08-30 2 views
2

Я не уверен, что это правильный путь, если да, сообщите об этом иначе.Частичный класс на модели, когда Entity Framework находится в отдельной библиотеке

Это 4 сайта ASP.Net MVC с помощью EF 5.x

Предположим, у вас есть Entity Framework в библиотеке классов на своем собственном. Код Generation Item теперь сгенерировал все ваши модели (раздел xxx.tt вашего EF-режима)

Этот проект затем добавляется/упоминается при разработке сайта.

Теперь вы можете получить доступ к данным через EF.

Теперь - в проекте сайта Я хочу создать частичный класс одной из моих моделей EF, например «Пользователи», с дополнительным свойством, которое не находится в БД.

В прошлом в проекте веб-форм, когда EF был частью проекта, а не ссылкой, я бы просто создал частичный класс, и все было бы хорошо; у моих «Пользователей» теперь будет множество других вещей, которые не были связаны с базой данных, но были необходимы для «Пользователя».

Я не могу заставить это работать в этом проекте MVC, где EF находится в отдельном проекте.

Я попытался сделать это, например:

using System; 
using System.Collections.Generic; 
using System.Linq; 
using System.Web; 
using MyTestEntity.Entity; 

namespace MyTestMVCSite.Models 
{ 
    public partial class Email 
    {  
     public string OtherEmail { 
      get { return "[email protected]"; } 
     }  
    } 
} 

Я также попытался не унаследовать класс модели EF, как это:

public partial class Email : MyTestEntity.Entity.Email 
{  
    public string OtherEmail { 
     get { return "[email protected]"; } 
    }  
} 

Ничего я, кажется, делают дает мне доступ к " OtherEmail "

Что я на самом деле хочу сделать, это создать частичный класс для некоторых из моих моделей, а затем реализовать этот частичный класс интерфейса, чтобы я мог инсталлировать insta nce этого интерфейса в другой объект, а не перегрузку.

Я говорю о безумной ерунде?

ответ

3

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

Затем вы можете выполнить валидацию независимо от модели на основе текущего вида. Просмотр моделей также защитит вас от случайного воздействия на вашу модель, что вы не хотите, чтобы пользователи изменяли данные, даже если вы явно не указали их в своем представлении.

+0

Использование ViewModels на данный момент для просмотров, это была скорее идея процессов, которые мы делаем за кулисами, которые не связаны с просмотром. Думаю, в конечном итоге это одно и то же? просто карта модели с дополнительной добротой. – Darren

+0

В этом случае вы можете использовать бизнес-объекты, которые затем сопоставляются с этими DTO, используемыми для сохранения данных. – devdigital

+0

Хорошо, отлично. Спасибо за дополнительные :) – Darren

6

Вы не можете иметь два частичных класса, относящихся к одному классу, в двух разных сборках (проектах). После сборки сборки метаданные запихиваются, а ваши классы уже не являются частичными. Частичные классы позволяют разбить определение одного и того же класса на два файла.

Is it possible to have two partial classes in different assemblies represent the same class?

+0

Ah - gotcha. Ладно, вот тогда :) Рисунок, где я прихожу. – Darren

+0

Я рассматриваю это как облом. – Mariusz

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