如何使用 C# Entity Framework 获取 SQL 服务器 table/view 等中每一列的数据类型?
How can I get data type of each column in a SQL Server table/view etc. using C# Entity Framework?
如何获取 SQL 服务器 table 或使用 Entity Framework 查看的每一列的类型?
我需要这样做 BEFORE 我从 table 获取所有数据,因为我想允许用户过滤,例如,从之前的日期数据实际上是从 SQL 服务器 table/view 检索的。
因此,如果我有 table 的 Books
和发布日期,我想 return 每列(名称、发布者、发布日期)类型,以便允许预先过滤。我需要这段代码来执行此操作,因为我不一定知道这些列,因为用户可能会使用多个不同的 table。
.NET Framework 类型很好,我不需要 SQL 服务器类型...
下面是一些示例代码:
using (var ArgoEntities = new ARGOEntities())
{
//find the types here before the user performs the query so i can build the below code
var query = from b in ArgoEntities.tbl_Books
where b.PublishDate>[user specified date] //some date here the user enters
select b;
var book = query.First();
}
编辑:到目前为止,我只能通过获取 table 中的第一条记录来做到这一点...
using (ARGOEntities ArgoEntities = new ARGOEntities())
{
//var fred = typeof(ARGOEntities).GetProperties();
//var fred = ArgoEntities.GetType().GetProperties();
var a=ArgoEntities.tbl_Books.FirstOrDefault();
var b = ObjectContext.GetObjectType(a.GetType());
var c=b.GetProperties();
}
但我再说一遍,我不想先获取任何记录。
您可以使用 GetProperty
然后 PropertyType
:
using (var ArgoEntities = new ARGOEntities())
{
//find the types here before the user performs the query so i can build the below code
//Like this you can retrieve the types:
foreach (string propertyName in ArgoEntities.CurrentValues.PropertyNames)
{
var propertyInfo = ArgoEntities.Entity.GetType().GetProperty(propertyName);
var propertyType = propertyInfo.PropertyType;
}
//
var query = from b in ArgoEntities.tbl_Books
where b.PublishDate>[user specified date] //some date here the user enters
select b;
var book = query.First();
}
Ryios 的评论让我得到了一个我知道它必须是的极其简单的答案,它将为我提供 table.
中每个字段的 PropertyInfo 数组
var columns=typeof(tbl_Books).GetProperties();
如何获取 SQL 服务器 table 或使用 Entity Framework 查看的每一列的类型?
我需要这样做 BEFORE 我从 table 获取所有数据,因为我想允许用户过滤,例如,从之前的日期数据实际上是从 SQL 服务器 table/view 检索的。
因此,如果我有 table 的 Books
和发布日期,我想 return 每列(名称、发布者、发布日期)类型,以便允许预先过滤。我需要这段代码来执行此操作,因为我不一定知道这些列,因为用户可能会使用多个不同的 table。
.NET Framework 类型很好,我不需要 SQL 服务器类型...
下面是一些示例代码:
using (var ArgoEntities = new ARGOEntities())
{
//find the types here before the user performs the query so i can build the below code
var query = from b in ArgoEntities.tbl_Books
where b.PublishDate>[user specified date] //some date here the user enters
select b;
var book = query.First();
}
编辑:到目前为止,我只能通过获取 table 中的第一条记录来做到这一点...
using (ARGOEntities ArgoEntities = new ARGOEntities())
{
//var fred = typeof(ARGOEntities).GetProperties();
//var fred = ArgoEntities.GetType().GetProperties();
var a=ArgoEntities.tbl_Books.FirstOrDefault();
var b = ObjectContext.GetObjectType(a.GetType());
var c=b.GetProperties();
}
但我再说一遍,我不想先获取任何记录。
您可以使用 GetProperty
然后 PropertyType
:
using (var ArgoEntities = new ARGOEntities())
{
//find the types here before the user performs the query so i can build the below code
//Like this you can retrieve the types:
foreach (string propertyName in ArgoEntities.CurrentValues.PropertyNames)
{
var propertyInfo = ArgoEntities.Entity.GetType().GetProperty(propertyName);
var propertyType = propertyInfo.PropertyType;
}
//
var query = from b in ArgoEntities.tbl_Books
where b.PublishDate>[user specified date] //some date here the user enters
select b;
var book = query.First();
}
Ryios 的评论让我得到了一个我知道它必须是的极其简单的答案,它将为我提供 table.
中每个字段的 PropertyInfo 数组var columns=typeof(tbl_Books).GetProperties();