C# 与Castle ActiveRecord的1到N关系映射
这是我关于堆栈溢出的第一篇文章!(耶!) 我在使用Castle ActiveRecord映射时遇到了问题,我认为这是一个非常常见的场景,但可能我没有正确地使用“google” 我有一个实体叫做产品,另一个实体叫做保修。产品上有两个属性(除其他属性外),每个属性都是保修类型。因此,模型看起来像这样(省略了属性和其他属性): 起初,我认为我需要将保修作为一个基类,然后创建两个具体的类,StandardWarranty和ExtendedWarranty,但这些类在任何类型的数据或行为中都不存在差异,因此使用带有鉴别器列的单表继承似乎过于复杂 在ActiveRecord文档中,我能想到的最接近的方法是使用“Any”属性。但文档似乎暗示,它应该用于存在与单独的具体类相关的多态行为的场景中。但我想在我开始钻兔子洞之前先和社区核实一下 也许我应该用一对多的关系来代替?一个产品有多个保证?但是product类最多有2个,至少有0个,所以这似乎仍然不正确 任何输入都会有帮助 谢谢,C# 与Castle ActiveRecord的1到N关系映射,c#,mapping,castle-activerecord,C#,Mapping,Castle Activerecord,这是我关于堆栈溢出的第一篇文章!(耶!) 我在使用Castle ActiveRecord映射时遇到了问题,我认为这是一个非常常见的场景,但可能我没有正确地使用“google” 我有一个实体叫做产品,另一个实体叫做保修。产品上有两个属性(除其他属性外),每个属性都是保修类型。因此,模型看起来像这样(省略了属性和其他属性): 起初,我认为我需要将保修作为一个基类,然后创建两个具体的类,StandardWarranty和ExtendedWarranty,但这些类在任何类型的数据或行为中都不存在差异,因
Matt我没有用Castle AR做太多的映射,但我用Rails做了我的一份。我猜你应该可以做如下事情:
public class Product
{
...
[OneToOne]
public Warranty StandardWarranty { get; set; }
[OneToOne]
public Warranty ExtendedWarranty { get; set; }
}
public class Warranty
{
...
[PrimaryKey(PrimaryKeyType.Foreign)]
public int ProductId { get; set; }
[OneToOne]
public Product Product { get; set; }
}
在我看来,它是好的。
public class Product
{
...
[OneToOne]
public Warranty StandardWarranty { get; set; }
[OneToOne]
public Warranty ExtendedWarranty { get; set; }
}
public class Warranty
{
...
[PrimaryKey(PrimaryKeyType.Foreign)]
public int ProductId { get; set; }
[OneToOne]
public Product Product { get; set; }
}