目前我使用了包含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,...(取决于资源的大小,将在程序启动期间修复)。
我的问题:
是否可以创建一个代理/包装/转换类,它将Resources Array映射到Res_X列。你有文件中的提示我可以开始吗?
用于搜索'Id'和'OwnerId'的LINQ仍然是可能的,对于Resources,没有必要。
答案 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)并将资源指定为未映射,则一切都应该有效。