C# EF-将泛型类映射到复杂类型

C# EF-将泛型类映射到复杂类型,c#,entity-framework,C#,Entity Framework,是否可以将泛型类映射到复杂类型? 我有一个小类,它有3个属性——string、int和泛型类型,并且希望将string和int(字符串实际上是序列化泛型类型)映射到一个复杂类型 我假设这是不可能的,因为泛型类“FQDN”是MyGenericClass,而复杂类型概念类型只是MyGenericClass是否有聪明的解决方案,或者我必须为泛型类的每次使用定义ComplexType?我不知道我是否正确理解您的意思,但是为什么不通过重写转换操作符来使用自定义强制转换呢。在下面的示例中,我将泛型复杂类隐式

是否可以将泛型类映射到复杂类型? 我有一个小类,它有3个属性——string、int和泛型类型,并且希望将string和int(字符串实际上是序列化泛型类型)映射到一个复杂类型


我假设这是不可能的,因为泛型类“FQDN”是
MyGenericClass
,而复杂类型概念类型只是
MyGenericClass
是否有聪明的解决方案,或者我必须为泛型类的每次使用定义ComplexType?

我不知道我是否正确理解您的意思,但是为什么不通过重写转换操作符来使用自定义强制转换呢。在下面的示例中,我将泛型复杂类隐式转换为非泛型类

阅读更多@

公共类类复合体
{
公共T MyGenericValue{get;set;}
公共字符串MyStringValue{get;set;}
public int MyIntValue{get;set;}
公共静态隐式运算符ClassComplex(ClassComplex a)
{
返回新的ClassComplex(){MyIntValue=a.MyIntValue,MyStringValue=a.MyStringValue};
}
}
公共班级综合体
{
公共字符串MyStringValue{get;set;}
public int MyIntValue{get;set;}
}
公开课考试
{
公开考试()
{
ClassComplex ccg=新的ClassComplex();
ccg.MyGenericValue=1;
ccg.MyIntValue=2;
ccg.MyStringValue=“3”;
类复杂cc=ccg;
}
}

EF不允许映射泛型类型(无论是复杂类型还是实体类型),这是一个好主意,但是,只要实体框架根据类名执行映射,那么我就会被迫在dto对象中使用
ClassComplex
,失去泛型类型的点。
public class ClassComplex<T> 
{
    public T MyGenericValue { get; set; }
    public string MyStringValue { get; set; }
    public int MyIntValue { get; set; }

    public static implicit operator ClassComplex(ClassComplex<T> a)
    {
        return new ClassComplex() { MyIntValue = a.MyIntValue , MyStringValue = a.MyStringValue };
    }
}

public class ClassComplex
{
    public string MyStringValue { get; set; }
    public int MyIntValue { get; set; }
}

public class Test
{
    public Test()
    {
        ClassComplex<int> ccg = new ClassComplex<int>();
        ccg.MyGenericValue = 1;
        ccg.MyIntValue = 2;
        ccg.MyStringValue = "3";

        ClassComplex cc = ccg;
    }
}