我有一个从基类派生的表。因此,派生表将具有与基表相同的 id。喜欢
public class Animal
{
public int AnimalId{get; set;}
public string Name{get;set;}
}
public class Man:Animal
{
//Primary key as well as foreign key will be AnimalId.
public string Communicate{get;set;}
}
现在,虽然我可以使用 ManId 作为数据库中的主键并使用 fluent api 让类知道 ManId 是基类 AnimalId,但我无法在我的 poco 类和编程中直接使用 ManId。
因此,我使用了 viewmodel,并为我的类和视图中使用了属性名称 ManId。我正在使用 ValueInjector 在模型和视图模型之间进行映射。
我整个早上都陷入并寻求解决方案的问题是:valueinjector 无法将 AnimalId 注入 ManId,因为名称不一样。
我发现解决方案可能是 .. 使用约定注入来覆盖默认值,但我无法正确实现它。
public class PropertyMismatch:ConventionInjection
{
protected override bool Match(ConventionInfo c)
{
return ((c.TargetProp.Name == "ManId" && c.SourceProp.Name == "AnimalId") ||
(c.SourceProp.Name==c.TargetProp.Name && c.SourceProp.Value==c.TargetProp.Value));
}
}
如果有人知道解决方案,那应该对我有很大帮助。非常感谢所有观众和求解者。