使用Entity Framework DbContext时,要创建一个新实体并将其包装在代理类中,可以执行以下操作:
var product = context.Products.Create();
为实体创建代理,但不允许构造函数变量初始化,如:
var product = new Product { name = "Product Name" };
问题1: 有没有办法为已经实例化的对象创建代理?喜欢:
context.Products.CreateProxyFrom(product)
问题2: 有没有办法创建像
这样的类初始化context.Products.Create() { name = "Product Name" };
我知道这两个选项都不存在,我想知道是否有一些快捷方式或解决方法。
问题3:
拥有PaymentCheck : Payment
(继承)
我只能做context.Payments.Create();
但我需要一个PaymentCheck
个实例。如何创建PaymentCheck
?
答案 0 :(得分:1)
在创建代理之后,我真的没有看到设置属性值的重大事项,但是如果你绝对必须在同一行上设置属性值并且不害怕要稍微污染你的IntelliSense,你可以使用扩展方法获得一些功能:
public static T Apply<T>(this T input, Action<T> action)
{
action(input);
return input;
}
用法:
Product product = context.Products.Create()
.Apply(p => p.name = "Product Name")
.Apply(p => p.category = 42);