假设我的数据库中有一个联系人表,其中有一个PhoneNumber列,例如,字符串“ +44123456789”。
在我的域模型中,我通常会拥有:
public class Contact {
public int Id { get; set; }
public string PhoneNumber { get; set; }
}
到目前为止很普通:)但是,现在,我想将一堆非DB逻辑与我的PhoneNumber相关联。
我可以制作一个PhoneNumber对象来容纳所有逻辑,而将我的PhoneNumber
属性设置为Number
对象:
public class Contact {
public int Id { get; set; }
public Number PhoneNumber { get; set; }
}
public class Number{
public string Number { get; set; }
//... other logic, getter wrappers, etc. ...
}
但是EF会将其解释为“ Number是具有单独表的新类型,并且Contact对象应该在Number表中的行上具有FK”。我不想-我想保持数据库模型不变。我可以在C#中手动进行转换,但最终会产生很多样板。
我想告诉EF,“我知道这看起来像一个对象,但是请相信我,它是一个原始数据。当您将其存储在数据库中时,它实际上是一个原始数据列。请将其转换为并在与数据库进行交互时以适当的方式(如果需要,由Number类提供)以原始方式提供数据。
EF中是否存在这个概念?
如果是的话,找到此文档的正确搜索词是什么?
有兴趣了解EF或EFCore。
答案 0 :(得分:0)
答案,由Ivan Stoev提供(请参阅问题注释):
看起来您要查找的搜索词是EF6中的“复杂类型”。
示例搜索结果:https://entityframework.net/complex-type
在EFCore中,相似(但不相同)的概念是“拥有实体类型”。
示例搜索结果:https://docs.microsoft.com/en-us/ef/core/modeling/owned-entities