在Entity Framework中将对象类型属性映射到varbinary(MAX)

use*_*426 9 c# wcf entity-framework ef-fluent-api

我有一种情况,我有一个类型属性的类型object,例如.

public class MyType
{
   public virtual object MyProp{get; get;}
}
Run Code Online (Sandbox Code Playgroud)

这种类型必须是:

  1. 保存使用Entity Framework到数据库,作为byte[](我已经想到了序列化逻辑)
  2. 通过WCF传输(我将使用该KnownType属性)

如何映射我的object属性,确保将其转换为字节数组进行存储?

注意:该object属性将是一个值类型(非复杂)

我想创建一个单独的类型来保存到数据库,例如:

public class MyTypeEntity
{
   public virtual byte[] MyProp{get; get;}
}
Run Code Online (Sandbox Code Playgroud)

如何在仍然能够定义关系映射的同时在类型之间进行转换/转换?

这是否涉及对储蓄的某种拦截?

我能想到的最好的解决方案就是将序列化数据存储在数据库中.

如果property covariance在C#中有某种形式,也许这会更容易.据我所知,它不存在.如果有一个我可以使用的优雅替代品,我将非常感谢您的见解.

Dre*_*dan 18

我建议byte[]在你的实体上保留一个字段; 你的类应该尽可能地模仿数据库结构.我过去做过类似事情的一种方法是创建一个单独的类文件(记住,你的实体是partial)并向NotMapped第二个文件添加一个属性.您可以让getter和setter执行从代码objectbyte[]代码的转换,只需始终与objectEF将忽略的属性进行交互.它非常轻松,EF仍会跟踪你不能直接访问的varbinary字段byte[].