Добавить методы в модель, используя структуру сущностей - PullRequest
14 голосов
/ 30 ноября 2010

Можно ли добавить методы в класс объектов с помощью структуры сущностей? Например, у меня есть сопоставление КЛИЕНТА, и я хотел бы создать метод "getAgeFromBirhDate".

Ответы [ 4 ]

22 голосов
/ 30 ноября 2010

Да.Возможно.Entity Framework генерирует Частичные классы .

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

4 голосов
/ 06 февраля 2014

Пример для первого ответа:

если у вас есть сущность с именем Flower, вы можете использовать этот класс partial для добавления к нему метода:

namespace Garden //same as namespace of your entity object
{
    public partial class Flower  
    {
        public static Flower Get(int id)
        { 
            //
        }
    }
}
2 голосов
/ 30 ноября 2010
public static class ModelExtended
{
    public static void SaveModelToXML(this Model1Container model, string xmlfilePath)
    {
        ///some code
    }
}
0 голосов
/ 12 января 2017

Если у вас есть частичный класс с ценой атрибута Entity Framework из базы данных:

    namespace Garden //same as namespace of your entity object
    {
        public partial class Flower  
        {
            public int price;
            public string name;
            // Any other code ...
        }
    }

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

namespace Garden //same as namespace of your entity object
{
    public class CustomFlower  
    {
        public Flower originalFlowerEntityFramework;

        // An extra custom attribute
        public int standardPrice;


        public CustomFlower(Flower paramOriginalFlowerEntityFramework)
        { 
            this.originalFlowerEntityFramework = paramOriginalFlowerEntityFramework
        }


        // An extra custom method
        public int priceCustomFlowerMethod()
        {
            if (this.originalFlowerEntityFramework.name == "Rose" ) 
                return this.originalFlowerEntityFramework.price * 3 ;
            else 
                return this.price ;
        }

    }
}

Затем, где бы вы ни захотели его использовать, вы создадите свой объект пользовательского класса и сохраните в нем объект из Entity Framework:

//Your Entity Framework class
Flower aFlower = new Flower();
aFlower.price = 10;
aFlower.name = "Rose";

// or any other code ...

// Your custom class
CustomFlower cFlower =  new CustomFlower(aFlower);
cFlower.standardPrice = 20;

MessageBox.Show( "Original Price : " + cFlower.originalFlowerEntityFramework.price );
// Will display 10
MessageBox.Show( "Standard  price : " + cFlower.standardPrice );
// Will display 20
MessageBox.Show( "Custom Price : " + cFlower.priceCustomFlowerMethod() );
// Will display 30
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...