Ответ 1
Да. Возможно. Entity Framework генерирует Частичные классы.
Это означает, что вы можете создать другой файл, содержащий другую часть определения Partial Class (с вашими дополнительными методами), и все будет работать нормально.
С инфраструктурой сущностей, можно ли добавлять методы к классу объектов? Например, у меня есть сопоставление CLIENT, и я бы хотел создать метод getAgeFromBirhDate.
Да. Возможно. Entity Framework генерирует Частичные классы.
Это означает, что вы можете создать другой файл, содержащий другую часть определения Partial Class (с вашими дополнительными методами), и все будет работать нормально.
Пример для первого ответа:
если у вас есть объект с именем Flower
, вы можете использовать этот класс partial
для добавления к нему метода:
namespace Garden //same as namespace of your entity object
{
public partial class Flower
{
public static Flower Get(int id)
{
//
}
}
}
public static class ModelExtended
{
public static void SaveModelToXML(this Model1Container model, string xmlfilePath)
{
///some code
}
}
Предполагая, что у вас есть свой неполный класс с ценой атрибута 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