使用LINQ for Entity Framework将实体强制转换为通用方法中的已实现接口

我有一个通用的方法来查询EF中TEntity类型的对象。 我想在TEntity实现特定接口的情况下将条件添加为where子句。 我的方法是: public TEntity GetByUserID(Guid userID) { var query = this.DbSet; if (typeof (TEntity).IsImplementationOf()) { query = query .Where((x => !((IDeletableEntity)x).IsDeleted); } return query .FirstOrDefault(x => x.UserID == userID); } IsImplementationOf ()是一个方法,它只是返回true / false,顾名思义。 当我为实现IDeletableEntity的实体地址运行它时,我收到一个错误: 无法将类型“地址”强制转换为“IDeletableEntity”。 LINQ to Entities仅支持转换EDM原语或枚举类型。 任何想法我如何解决这个LINQ的限制?

方括号之间的文本含义

我见过很多使用[]的C#程序,例如[STAThread] ,然后代码如下。 另一个经典的例子是[DLLImport] 。 我知道STAThread意思,但我的问题是方括号的意义是什么,基本上它们告诉编译器的是什么?

如何确定System.Type是自定义类型还是Framework类型?

我想清楚地确定我所拥有的类型是自定义类类型(MyClass)还是Framework(System.String)提供的类型。 反思是否有任何方法可以将我的类类型与system.string或其他Framework提供的类型区分开来?

如何获取当前ItemsControl项的索引?

有没有办法获取WPF当前ItemsControl项的索引? 例如,我想做类似的事情: 这样,在此之后,第一个TextBox将显示文本”0″ ,第二个”1″ ,第三个”2″ …

System.Data.SqlClient.SqlException:用户登录失败

在调试中使用我的项目我没有问题。 但是在IIS中运行它我收到此错误: System.Data.SqlClient.SqlException:用户’domain \ name-PC $’登录失败。 堆栈跟踪 [SqlException (0x80131904): Login failed for user ‘CAPLUGSLLC\OETINGER-PC$’.] System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection, Action`1 wrapCloseInAction) +6749670 System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj, Boolean callerHasConnectionLock, Boolean asyncClose) +815 System.Data.SqlClient.TdsParser.TryRun(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj, Boolean& dataReady) +4515 System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) +84 System.Data.SqlClient.SqlInternalConnectionTds.CompleteLogin(Boolean enlistOK) +53 […]

异步一直向下?

试图理解新的异步/等待模式,我有一个问题,我找不到答案,即如果我应该用异步装饰我的方法,如果我打算从其他异步函数调用这些方法,或只是返回Task在适当的地方? 换句话说,这些A,B或C类中哪一个最好,为什么? class A { public async Task foo1() //Should be consumed { return await foo2(); } public async Task foo2() //Could be consumed { return await foo3(); } private async Task foo3() //Private { return await Task.Run(…); } } class B { public async Task foo1() //Should be consumed { return await foo2(); } […]

C# – 获取ToolStripMenuItem的父级

如何确定ToolStripMenuItem的父级? 使用普通的MenuStrip,您只需使用Parent属性,但似乎ToolStripMenuItem不具有该属性。 我有一个ToolStripDropDownButton,它有几个ToolStripMenuItems,我希望能够以编程方式精确定位那些父类。

将对象传递给不同的窗体

我想在win表单之间传递一个C#对象。 目前,我已经设置了一个基本项目来学习如何执行此操作,该项目由两个表单组成 – form1和form2以及一个名为class1.cs的类,其中包含get和set方法,用于在form1中输入的值设置字符串变量。 (表单2应该获取存储在class1对象中的值) 如何从form1中设置的对象获取字符串值? 我是否需要将其作为参数传递给form2? 任何评论/帮助将被指定! 谢谢, 编辑:这是我目前的代码:(form1.cs) private void button1_Click(object sender, EventArgs e) { this.Hide(); Form2 form2 = new Form2(); form2.Show(); } private void button2_Click(object sender, EventArgs e) { if (textBox1.Text != “”) { Class1 class1 = new Class1(); class1.setStringValue(textBox1.Text); } } } }

wpf xaml绑定到后面的代码中创建的对象

刚开始我对C#和xaml很新。 我已经看过,检查了教程,关于绑定,但我见过的大部分都在xaml中创建了一个对象。 但是我想在代码中创建对象,然后绑定到它的属性。 此外,我将在稍后的代码中定义几个对象。 一般来说,我想绑定到文本框。 一般来说,我的代码看起来像这样: MainWindow.xaml.cs public partial class MainWindow : Window { MyTestObject myTestObject; public MainWindow() { myTestObject= new MyTestObject (); this.DataContext = this; InitializeComponent(); } } MyTestObject .cs class MyTestObject : INotifyPropertyChanged { public MyTestObject () { } private string testString = “Test”; public string TestString { get { return testString; } […]

entity framework中的联盟

我有两张桌子:车辆和工人。 Vehicle(Id, Number) Workers(Id, Name, ContractorVehicleNumber) 我想写lambda查询来返回所有车辆和承包商车辆。 像sql中的东西: SELECT Id, Number FROM Vehicle UNION SELECT NULL, ContractorVehicleNumber FROM Workers 这就是我所做的: public IQueryable Get(bool includeContractorVehicles) { IQueryable query = GetQuery(); if (includeContractorVehicles == true) { WorkerRepository rep = new WorkerRepository(); IQueryable contractorsVehicles = rep.GetWirkers(). Select(x => new Vehicle() { VehicleNumber = x.ContractorVehicleNumber }); query = query.Union(contractorsVehicles); […]