小编Rex*_*x M的帖子

Entity Framework/LINQ to SQL Data Binding是否使用反射?

如果之前有人问过,请原谅我; 我做了一个搜索,但找不到任何具体回答这个问题,但我很乐意被推荐.

我正在看一下Entity Framework和LINQ to SQL,虽然我喜欢这些系统(当然还有LINQ集成)但我对数据绑定方面有点怀疑.我已经采取了查询结果,并检查他们,他们似乎并没有执行标准的.NET列表绑定接口(IBindingList以及更重要的ITypedList),导致我相信,他们结合到网格(或其他任何东西)是怎么回事使用反射来获取/设置我的实体属性.这似乎是一个相对昂贵的操作,特别是当所有代码都生成并且可以实现接口时.

有没有人对此有任何见解?反射用于获取/设置属性的值吗?如果是,这是否会产生明显的性能影响,是否有人知道他们为什么选择这条路线?

编辑

我实际上专注于是否在ITypedList某个地方实现,因为这是有能力提供一种显式机制来定义和与属性交互而不需要求助于反射.虽然我没有LINQ to SQL项目,但我确实检查了一个简单的Entity Framework实体查询结果,但它似乎没有实现ITypedList.有谁知道我是不是只是看错了,或者如果不是为什么会这样?

编辑2

在接受了Marc的回答之后,我认为如果我发布了一些我用来无缝实现其解决方案的简单代码,那么对其他人可能会有所帮助.我将以下内容放在我的类的静态构造函数中:

public static ContextName()
{
    foreach(Type type in System.Reflection.Assembly.GetExecutingAssembly()
        .GetTypes())
    {
        if (type.GetCustomAttributes(typeof(System.Data.Linq.Mapping
            .TableAttribute), true) != null)
        {
            System.ComponentModel.TypeDescriptor.AddProvider(
                new Hyper.ComponentModel.HyperTypeDescriptionProvider(
                    System.ComponentModel.TypeDescriptor.GetProvider(
                        type)), 
                type);
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

虽然这是针对LINQ to SQL的,但我确信可以为Entity Framework编写等效版本.这将扫描程序集中包含该Table属性的任何类型,并为每个类型添加自定义提供程序.

c# vb.net reflection entity-framework linq-to-sql

8
推荐指数
1
解决办法
3397
查看次数

使用Mono在OSX上等效的Windows服务

我需要做什么才能让我的.NET-Mono应用程序在OSX上作为后台进程运行,并在操作系统启动时启动?(假设应用程序已准备好继续运行OSX)

有关

为可以在Windows和OS X上运行的.NET应用程序构建安装程序?

.net macos mono

8
推荐指数
1
解决办法
2072
查看次数

IIS中的请求是否会在单个线程上运行?

我们有一个在IIS中运行的系统.

系统应始终使用相同的"文化"运行,但我们不能依赖正确设置的服务器设置.

一种方法是在每次进行ToString时指定文化.

但是,我们想知道,是否有可能在方法开始时在一个线程上设置文化并依赖该方法中的所有代码在同一个线程上运行?

c# asp.net iis multithreading

8
推荐指数
2
解决办法
3482
查看次数

C#:在单独的Thread中调用[Type] .InvokeMember()方法

我正在使用此代码,我正在调用run从dll动态加载的类的List方法:

for (int i = 0; i < robotList.Count; i++)
{
    Type t = robotList[i]; //robotList is a List<Type>
    object o = Activator.CreateInstance(t);
    t.InvokeMember("run", BindingFlags.Default | BindingFlags.InvokeMethod, null, o, null);
}
Run Code Online (Sandbox Code Playgroud)

invokeMember被调用run推法每一类在列表中.

现在我如何在一个单独的线程中调用此run方法invokeMember?这样我就可以为每个被调用的方法运行单独的线程.

.net c# reflection multithreading

7
推荐指数
1
解决办法
3万
查看次数

在VS 2010发布之前我应该​​等待购买Resharper吗?

我用完了30天的试用版,现在想买Resharper.但是,我很穷,150美元对我来说很重要.

VS 2010中的任何东西都会让购买Resharper成为一个错误吗?我听说VS 2010就像VS 2008 + Resharper.

我觉得很难相信,但在花钱之前想问问.

谢谢!

结果:我买了Resharper并且从此没有后悔.我全天多次使用它的代码导航和重构工具.没有它我真的不能使用VS2008.

.net c# resharper visual-studio

7
推荐指数
1
解决办法
1932
查看次数

Linq:获取DataContext中所有表的列表

我有一个包含100多个表的DataContext(Linq到Sql),是否可以获取所有这些表的列表,然后让它们打印到控制台?这可能是一个愚蠢的问题.

谢谢.

.net linq datacontext asp.net-3.5

7
推荐指数
1
解决办法
1万
查看次数

重构LINQ IQueryable表达式以删除重复的查询部分

我有一些具有冗余的linq查询,我想分解出一段代码.这些是IQueryable的连接表达式,重要的是我不会导致查询比没有重构时更早地进行评估.

这是一个简化的查询:

var result = 
from T in db.Transactions
join O in db.Orders on T.OrderID equals O.OrderID
join OD in db.OrderDetails on O.OrderID equals OD.OrderID into OrderDetails
let FirstProductBought = OrderDetails.First().Select(OD => OD.Product.ProductName)
select new
{
  TransactionID = T.TransactionID,
  OrderID = O.OrderID,
  FirstProductBought = FirstProductBought
};
Run Code Online (Sandbox Code Playgroud)

我想要分解的是"给定订单,购买的第一个产品是什么"的逻辑.我在其他查询中使用相同的逻辑.如何将其分解为共享方法?

通常,对于代码重用和IQueryables,我能够做的是使IQueryable进入并生成IQueryable/IOrderedQueryable作为输出的代码.使用这些函数,我可以使用可重用代码构建LINQ表达式,该代码仍然会延迟查询,直到查询完全构造完毕.在这里,由于我只有一个int(orderID),我不知道如何使它工作.

谢谢

.net linq iqueryable linq-to-sql

7
推荐指数
1
解决办法
1744
查看次数

路由与URL重写(IIS7)性能

我想知道这两种方法在性能方面有什么不同吗?关于这个的任何好文章?

.net asp.net url-rewriting url-routing

7
推荐指数
1
解决办法
1502
查看次数

C# - 将数字附加到要保存的文件

我创建了一个截图程序,一切都很好.唯一的问题是,我不知道如何制作它,所以屏幕截图是附加数字保存的.

示例:屏幕截图1,屏幕截图2,屏幕截图3,屏幕截图4等.

显然,这可以应用于其他正在保存的文件.有任何想法吗?谢谢.

.net c# filenames sequence

7
推荐指数
1
解决办法
4851
查看次数

在.NET开发中,WinForms /桌面开发人员与ASP.NET开发人员的细分是什么?

.NET开发人员进行WinForms /桌面开发与ASP.NET开发的比例是多少?有很多重叠吗?它们是非常不同的技能组合吗?

.net vb.net asp.net wpf winforms

7
推荐指数
1
解决办法
367
查看次数