C# 在实体框架中将对象类型属性映射到varbinary(MAX)
我有一种情况,我有一个类型,其属性为typeC# 在实体框架中将对象类型属性映射到varbinary(MAX),c#,entity-framework,wcf,ef-fluent-api,C#,Entity Framework,Wcf,Ef Fluent Api,我有一种情况,我有一个类型,其属性为typeobject,例如 public class MyType { public virtual object MyProp{get; get;} } 这种类型必须是: 使用实体框架保存到数据库,作为字节[](我已经计算了序列化逻辑) 通过WCF传输(我将使用KnownType属性) 如何映射我的对象属性以确保将其转换为字节数组进行存储? 注意:对象属性将是值类型(非复杂) 我想创建一个单独的类型保存到数据库中,例如: public class M
object
,例如
public class MyType
{
public virtual object MyProp{get; get;}
}
这种类型必须是:
实体框架
保存到数据库,作为字节[]
(我已经计算了序列化逻辑)KnownType
属性)对象
属性以确保将其转换为字节数组进行存储?
注意:对象
属性将是值类型(非复杂)
我想创建一个单独的类型保存到数据库中,例如:
public class MyTypeEntity
{
public virtual byte[] MyProp{get; get;}
}
如何在仍然能够定义关系映射的情况下在类型之间转换/转换?
这是否涉及某种形式的保存拦截?
在不伤脑筋的情况下,我能想到的最佳解决方案就是将序列化数据存储在数据库中
如果C#中存在某种形式的属性协方差
,也许这会更容易实现。据我所知,它并不存在。
如果有一个优雅的替代方案,我可以使用,我将感谢您的洞察力。我建议在您的实体上保留一个
字节[]
字段;您的类应该尽可能真实地模拟数据库结构。我以前做过类似的一种方法是创建一个单独的类文件(请记住,您的实体是部分的
),并向第二个文件添加NotMapped
属性。您可以让getter和setter执行从object
到byte[]
的转换,并且在代码中始终与EF将忽略的object
属性交互。这非常轻松,EF仍然会跟踪varbinary
字段到您不直接访问的byte[]
好主意!绝对无痛。我不知道我可以使用partials(EF新手)。谢谢@drewjordan如果你想的话,你可以将它包含在第一个文件中。。。不过我喜欢单独保存数据库模型。我会看看团队会接受什么,否则我也有同样的想法。我是否必须放置任何属性装饰以确保其未映射?或者只是不映射就足够了?是的,属性是新属性上的NotMapped
。明白了。我错过了那个。谢谢