我想将动态对象保存到数据库。将动态设置数据库表名称。所以我没有上课。
private static dynamic CreateModel()
{
var model = string.Format("{{'id': '{0} - {1}', 'name':' Path - ', 'length':'{2}' }}", Guid.NewGuid(), DateTime.Now,new Random().NextDouble() * 10 );
return JsonConvert.DeserializeObject(model);
}
这创建了动态对象。我将此添加到实体框架通用存储库。
using (var repository = new EFRepository(new Context()))
{
repository.SaveOrUpdate<????>(CreateModel())
}
我无法设置类型名称。我可以在这里设置一个随机名称。
(repository.SaveOrUpdate<T>
是一种通用方法)
答案 0 :(得分:0)
你不能那样使用EF。
您无法传递动态执行SaveOrUpdate方法,因为dynamic
可以是任何东西,可以是String,Int或Object。在运行应用程序之前,您永远不会知道这个编译器,因为dynamic
类型在编译时但在运行时没有得到解决。
如果你可以成像,你就不能在泛型<T>
中使用动态,因为T需要是一个引用,它是在运行时解决的动态。
我认为更好的方法是使用OO来帮助您,使用工厂创建基类来构建动态对象,并使用此基类而不是动态。