c# - 循环 Entity Framework 对象的表和列

标签 c# entity-framework c#-4.0 entity-framework-4

我有一个名为 BookLibrary 的数据库,其中包含 3 个表 AuthorPayrollArticle。我正在使用 Entity Framework 连接到数据库。我创建了它的一个实例。

BookLibrary bookLibraryContext = new BookLibrary();

现在我想将其转换为数据集(将数据集作为参数传递)。怎么做?

此外,通过使用 T4 模板,我想将所有列名称生成为只读字符串属性。为此,我需要循环遍历数据库内的所有表和列名称(并且我想通过我的实体对象 bookLibraryContext 来完成此操作)。但我不确定如何循环实体对象的所有表和列?我在google上搜索过,但很多人建议使用Reflection进行循环或直接使用SQL。我想通过 C# 来完成,但我对 Reflection 不太熟悉。

最佳答案

Now I want to cast this in a dataset (to pass dataset as a argument). How to do it?

手动。 EF 和数据集是完全不同的技术,它们都不包含任何相互转换的支持。因此,您必须手动创建数据集和所有要使用的数据表,并从上下文中手动填充它们。

如果您想使用数据集,请不要使用 Entity Framework 。直接使用数据集。

But I am not sure how to loop through all tables and columns of an entity object?

实体对象没有此信息。此信息隐藏在 EF 映射深处,可通过 bookLibraryContext.MetadataWorkspace 获取。您不需要反射(reflection)即可获取此信息。您只需要了解 EDM 及其存储信息的方式即可。

尝试这样的事情:

foreach (var entityType in context.MetadataWorkspace
                                  .GetItems<EntityType>(DataSpace.SSpace))
{
     string tableName = entityType.MetadataProperties
                                  .Single(m => m.Name == "Name")
                                  .Value
                                  .ToString();

     var members = (ReadOnlyMetadataCollection<EdmMember>)entityType
                                              .MetadataProperties
                                              .Single(m => m.Name == "Members")
                                              .Value;

     foreach (var columnName in members.Select(m => m.Name))
     {

     }
}

关于c# - 循环 Entity Framework 对象的表和列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10110284/

相关文章:

c# - 与 Entity Framework Fluent API 的一对一关系

c# - 由于关系问题,无法将行插入数据库

C#:将数组元素相互相乘

c# - 处理困惑的界面层次结构 (MSHTML) 的最佳方法是什么?

c# - 通过 MSMQ 和 WCF 发送的超过接收者配额的消息会怎样?

c# - System.Diagnostics.Process.StartWithCreateProcess(ProcessStartInfo startInfo) 拒绝访问

mysql - Entity Framework 6.0 启用 MySQL 和自动迁移错误 :- RenameIndexOperation exception

c# - 带有 ServiceStack 的 OData?

c# - 对列表中的一系列整数求和

asp.net-mvc-3 - 指定 Html.TextBoxFor 的大小和最大长度