Entity Framework и бизнес-объекты - PullRequest
10 голосов
/ 05 марта 2011

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

Я вижу, что объекты могут быть представлены на уровне представления.Но я не хочу, чтобы отображались определенные поля, такие как измененные даты и даты создания, а также различные другие поля базы данных.

как я могу реализовать бизнес-объекты и просто предоставить нужные мне свойства, но при этом сохранить сериализуемые объекты?

Кроме того, какие преимущества это имеет по сравнению с LinqToSql?

Ответы [ 5 ]

22 голосов
/ 05 марта 2011

Когда вы определяете сущность в модели EDMX, вы можете указать видимость каждого установщика и получателя свойства, поэтому, если вы не хотите, чтобы ModifiedDate был видимым в других слоях, вы можете просто указать его как внутренний.

enter image description here

Если ваши требования сложнее, например, ModifiedDate должен быть доступен в сборке сущностей и сборке бизнес-логики, но не в сборке пользовательского интерфейса, тогда вам нужно создать другой объект, который будет обмениваться между бизнес-логикой и логикой пользовательского интерфейса. слои.

3 голосов
/ 06 марта 2011

Лично использую класс-оболочку над сущностью и выставляйте или скрывайте то, что мне нужно.

// instead of below property in your BLL:

private int m_someVariable;

public int SomeVariable
{
    get { return m_someVariable; }
    set { m_someVariable = value; }
}

// You can use the entity object:

private readonly EntityClass _entityObject = new EntityClass();

public int SomeVariable
{
    get { return _entityObject.SomeVariable; }
    set { _entityObject.SomeVariable = value; }
}

// or make it read-only at your BLL

public int SomeVariable
{
    get { return entityObject.SomeVariable; }
    // set { entityObject.SomeVariable = value; }
}
1 голос
/ 31 августа 2011
      // this is your edmx
        Asset5Entities conx = new Asset5Entities();

// считаем, что это новый список объектов Contact, который является таблицей в базе данных // используя структуру сущностей, эта таблица базы данных отображается на объект для обработки

            List$gt;Contact$lt; s = new List$gt;Contact$lt;();

// используя большой LINQ вы можете выбрать или запросить любую таблицу в вашей базе данных, и у вас есть // доступ к столбцам в этом примере таблицы (электронная почта) здесь

        var result = from q in conx.Contacts select q.Email;

// вместо

        string sqlcommand = "select email from Contacts";
        Contact con = new Contact();
        con.Email= "xxxx@gmail.com";
        con.FirstName="nader";

        //etc etc... 



        conx.Contacts.AddObject(con);

        //rather than   " insert into Contact values ......................"

        //having your queries within ur c# code rather than strings that are not parsed //for errors but on runtime was alot helpful for me
1 голос
/ 05 марта 2011

Вы привязываете только те свойства, которые хотите, к слою представления, это можно сделать с помощью объявления, уровня бизнес-логики (со своим собственным уровнем абстракции объекта) или вашей ViewModel.

...