orm – 实体框架4仅代码从MetaData获取POCO域对象的表名
发布时间:2020-12-15 02:21:52 所属栏目:Java 来源:网络整理
导读:嗨,我只使用来自CTP4的实体框架代码.我的问题是:给定使用EntityConfiguration映射的域类的名称,如何在运行时检索映射类的表名?我假设我需要在ObjectContext上使用MetadataWorkspace,但发现很难获得最新的文档.任何帮助或链接将不胜感激.谢谢. 解决方法 是
嗨,我只使用来自CTP4的实体框架代码.我的问题是:给定使用EntityConfiguration映射的域类的名称,如何在运行时检索映射类的表名?我假设我需要在ObjectContext上使用MetadataWorkspace,但发现很难获得最新的文档.任何帮助或链接将不胜感激.谢谢.
解决方法
是的,你是对的,可以通过MetadataWorkspace检索所有的映射信息.
下面是为了退出Product类的表和模式名称的代码: public class Product { public Guid Id { get; set; } public string Name { get; set; } } public class ProductConfiguration : EntityTypeConfiguration<Product> { public ProductConfiguration() { HasKey(e => e.Id); Property(e => e.Id) .HasColumnName(typeof(Product).Name + "Id"); Map(m => { m.MapInheritedProperties(); m.ToTable("ProductsTable"); }); Property(p => p.Name) .IsRequired() .IsUnicode(); } } public class Database : DbContext { protected override void OnModelCreating(DbModelBuilder modelBuilder) { modelBuilder.Configurations.Add(new ProductConfiguration()); } public DbSet<Product> Products { get; set; } } 现在,要检索Product类的表名,您必须创建DbContext并使用以下代码: using(var dbContext = new Database()) { var adapter = ((IObjectContextAdapter)dbContext).ObjectContext; StoreItemCollection storageModel = (StoreItemCollection)adapter.MetadataWorkspace.GetItemCollection(DataSpace.SSpace); var containers = storageModel.GetItems<EntityContainer>(); EntitySetBase productEntitySetBase = containers.SelectMany(c => c.BaseEntitySets.Where(bes => bes.Name == typeof(Product).Name)).First(); // Here are variables that will hold table and schema name string tableName = productEntitySetBase.MetadataProperties.First(p => p.Name == "Table").Value.ToString(); string schemaName = productEntitySetBase.MetadataProperties.First(p => p.Name == "Schema"). } 我怀疑这是一个完美的解决方案,但正如我之前使用它并且它没有问题. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
相关内容
- java – Tomcat 6没有从WEB-INF / lib加载jar
- java读取resource目录下文件的方法示例
- 为什么java允许私有String [] [] var []
- Java在64位操作系统上编译32位操作系统运行时问题
- java – 无法将简单的Spring Boot Web应用程序部署到OpenSh
- java – Hibernate saveOrUpdate()尝试在应该更新时保存
- java – 是否保证System.nanoTime()返回唯一的值?
- 哪里有基于J2EE的网站系统设计定做
- java – HTML格式化文本
- ELEC4620/7462 Digital Signal Processing