【发布时间】:2014-02-19 06:24:35
【问题描述】:
我正在使用 C#、Entity Framework 4 和 DB2 创建一些手动 SQL 更新,就像这个天真的示例一样......
var UpdateCommand = "UPDATE MY_SCHEMA." + this.Entities.PRODUCT.EntitySet.Name +
" SET STOCK=0";
var AffectedRows = this.Entities.ExeceuteStoreCommand(UpdateCommand);
我想将模式指定为实体名称(稍后,如果在可重用库方法中实现,可以作为参数传递)。所以,我尝试了...
var Container = this.Entities.MetadataWorkspace.GetEntityContainer(this.Entities.DefaultContainerName, System.Data.Metadata.Edm.DataSpace.CSpace);
var Set = Container.GetEntitySetByName(this.Entities.PRODUCT.EntitySet.Name, true);
var SchemaName = Set.MetadataProperties["Schema"].Value;
问题是返回的 SchemaName 总是为空!
我见过基于解析实体框架生成的 SQL 的解决方案,但这可能会被愚弄(文本可以包含任何内容),或者特定于 SQL-Server。我们的想法是像 EF 一样与 DB 无关。
问题是...如何从 EF 对象中获取实体模式名称,而不是解析生成的 SQL 并且与 db 无关?
【问题讨论】:
标签: c# .net entity-framework