是否可以在自定义类上添加“DeleteOnNull = true”而不是直接修改DBML(生成的)类?
例如,假设这是我生成的dbml类的一部分:
[Table(Name="OrderDetails")]
public partial class OrderDetail :
INotifyPropertyChanging, INotifyPropertyChanged
{
// deleted for brevity
[Association(Name="Order_OrderDetail",
Storage="_Order", ThisKey="OrderId",
OtherKey="OrderId", IsForeignKey=true, DeleteOnNull=true)]
public Order Order
{
get { /* deleted */ }
set { /* deleted */ }
}
}
那么可以将“DeleteOnNull = true”放在一个单独的类上吗?是吗?怎么样?我没有运气就试过以下内容:
[MetadataType(typeof(OrderDetailMetadata))]
public partial class OrderDetail {
internal sealed class OrderDetailMetadata
{
[Association(DeleteOnNull = true)]
public object Order;
}
}
答案 0 :(得分:1)
也许你不需要MetaData类型。这是否适用于您的其他部分内容:
public partial class OrderDetail {
[Association(DeleteOnNull = true)]
public Order Order;
}
..我知道单独Order
没有定义,但你不应该像那样构建。 This MSDN doc表明上述内容应该是可能的(如果我正确阅读的话)。
答案 1 :(得分:1)
迟到总比没有好:
如果您一直使用Designer创建LTS配置和实体,则可以右键单击DBML文件,然后选择“打开方式...”。现在选择XML Editor并单击OK。
在此文件中找到您的Order_OrderDetail
关联,然后向其中添加DeleteOnNull="true"
。保存文件,让LTS为您重新生成课程。完成!再也不会对生成的代码文件进行更改了!
答案 2 :(得分:0)
我构建程序集然后使用reflector来示例该类,以查看它是否具有从partial类设置的属性属性。如果这甚至不起作用那么你可能需要尝试别的东西。可能不支持该类型的属性重叠。
你想通过这个来实现什么目标?