C# 自定义类中Linq到SQL的DeleteOnNull(关联属性)?

C# 自定义类中Linq到SQL的DeleteOnNull(关联属性)?,c#,linq,linq-to-sql,C#,Linq,Linq To Sql,是否可以在自定义类上添加“DeleteOnNull=true”,而不是直接修改DBML(生成的)类 例如,假设这是我生成的dbml类的一部分: [Table(Name="OrderDetails")] public partial class OrderDetail : INotifyPropertyChanging, INotifyPropertyChanged { // deleted for brevity [Association(Name="Order

是否可以在自定义类上添加“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;
    }
}

我将构建程序集,然后使用示例类来查看它是否具有从分部类设置的属性属性。如果这根本不起作用,那么你可能需要尝试其他方法。可能不支持该类型的属性重叠


你想通过这个实现什么?

也许你不需要元数据类型。这是否适用于您的附加部分:

public partial class OrderDetail {
    [Association(DeleteOnNull = true)]
    public Order Order;
}

…我知道,
Order
本身并没有定义,但您不需要这样构建。建议上述内容应该是可能的(如果我阅读正确)。

迟做总比不做好:

如果您一直在使用设计器创建LTS配置和实体,则可以右键单击DBML文件,然后选择“打开方式…”。现在选择XML编辑器并单击OK


在此文件中找到您的
Order\u OrderDetail
关联,然后向其中添加
DeleteOnNull=“true”
。保存文件并让LTS为您重新生成类。完成!不再让您对生成的代码文件所做的更改再次被覆盖

基本上,每次我们更改DB模式并重新生成时,都会尽量减少编辑dbml并重新添加DeleteOnNull。因此,我们可以在db开发过程中不断重新生成LtS dbml,并且自定义代码(在本例中为DeleteOnNull)不会受到影响。真倒霉很抱歉,我不知道这个。如果Order不是dbml中的属性生成类,这是可能的。但在我的例子中,OrderDetail与任何其他被拖到设计器中生成代码的表一样。因此,OrderDetail类中的属性顺序也是通过生成而存在的。如果我按照您的建议执行,它将在OrderDetail类中创建属性“Order”的重复声明。Yeh。。当然嗯。。你试过了吗?只是为了验证没有首选项系统(尝试在相同属性上查找有关首选项的文档-未找到任何文档)。关联关键字与system.ComponentModel.DataAnnotations命名空间冲突。这可能会更好:[System.Data.Linq.Mapping.Association(DeleteOnNull=true)]公共秩序;“而不是直接修改DBML(生成的)类?”而不编辑哪个?DBML文件(.DBML)或生成的类(.cs或.vb)?它们是两个不同的东西。我指的是生成部件附带的cs文件。