自定义POCO-对象到表

时间:2012-03-25 14:52:55

标签: c# .net entity-framework entity-framework-4

目前我使用了包含DbSet< T>的继承的DbContext-Classes。成员将POCO对象存储到数据库中。这适用于'编译时已知'类及其结构。

现在我有一个像

这样的课程
public class ResourceSet
{
    public long Id
    {
        get;
        set;

    }
    public long OwnerId
    {
        get;
        set;
    }

    public double[] Resources
    {
        get;
        set;
    }
}

并希望将其存储到数据库方案中:

Id,OwnerId,Res_1,Res_2,Res_3,...(取决于资源的大小,将在程序启动期间修复)。

  • 目前我使用的是EFCodeFirst的CTP5
  • DbSet<&的ResourceSet GT;当然失败了。它不支持索引属性。
  • 我想避免使用.edmx文件

我的问题:

是否可以创建一个代理/包装/转换类,它将Resources Array映射到Res_X列。你有文件中的提示我可以开始吗?

用于搜索'Id'和'OwnerId'的LINQ仍然是可能的,对于Resources,没有必要。

1 个答案:

答案 0 :(得分:2)

如果Linq查询中从不需要Resources,您可以将其映射到字符串支持属性,然后将其保存回数据库。

public double[] Resources
{
    get
    {
        var result = from r in ResourceString.Split(new string[] {";"}, StringSplitOptions.RemoveEmptyEntries)
                     select double.Parse(r);

        return result.ToArray();
    }
    set
    {

        ResourceString = string.Empty;
        foreach (var d in value)
        {
            ResourceString += d + ";";
        }
    }
}

private string ResourceString
{
    get;
    set;
}

如果您将实体框架更新到最新版本(通过NuGet)并将资源指定为未映射,则一切都应该有效。