Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/261.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在实体框架中将对象类型属性映射到varbinary(MAX)_C#_Entity Framework_Wcf_Ef Fluent Api - Fatal编程技术网

C# 在实体框架中将对象类型属性映射到varbinary(MAX)

C# 在实体框架中将对象类型属性映射到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

我有一种情况,我有一个类型,其属性为type
object
,例如

public class MyType
{
   public virtual object MyProp{get; get;}
}
这种类型必须是:

  • 使用
    实体框架
    保存到数据库,作为
    字节[]
    (我已经计算了序列化逻辑)
  • 通过WCF传输(我将使用
    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
    。明白了。我错过了那个。谢谢