Tag: entity framework

在ASP.NET MVC 4 C#Code First中指定ON DELETE NO ACTION

如何在模型设计中指定ON DELETE NO ACTION外键约束? 目前,我有: public class Status { [Required] public int StatusId { get; set; } [Required] [DisplayName(“Status”)] public string Name { get; set; } } public class Restuarant { public int RestaurantId { get; set; } [Required] public string Name { get; set; } [Required] [EmailAddress] public string Email { get; set; } […]

IDbSet 上没有FindAsync()方法

有没有理由从IDbSet接口中省略FindAsync()方法? Find是界面的一部分,异步版本不可用似乎很奇怪。 我需要DbSet转换为DbSet来访问它,这有点麻烦: User user = await ((DbSet)db.Users) .FindAsync(“de7d5d4a-9d0f-48ff-9478-d240cd5eb035”);

使用集合EntityFramework连接表

也许它是重复但我找不到正确的方法正确遵循。 通常我想从Employee表中检索与List相关的所有数据。 类型MyEmployee包含EntitySourceID,我用它来映射EmployeeID。 所以,我想检索所有与List集合中的EntitySourceID匹配EmployeeID的Employe。 类型MyEmployee看起来像: public class MyEmployee { public long PersonID { get; set; } public string ConnectionString { get; set; } public long EntitySourceID { get; set; } public int EntitySourceTypeID { get; set; } } 我的查询看起来像: internal IEnumerable GetPersons(List myEmployees) { return (from p in _context.Employee join pList in myEmployees on p.EmployeeID […]

DbSet.Cast ()错误:无法从非genericsDbSet为“实体”类型的对象创建DbSet

版本信息: 我正在使用C#4.5,Entity Framework 6.0和MEF。 代码和unit testing 我创建了一个测试项目来解释这个问题: https : //skydrive.live.com/redir?resid = E3C97EC293A34048!2234 请打开UnitTest项目并尝试运行TestIfItWorks()unit testing。 问题 我想将非genericsDbSet转换为其通用版本,但是我得到以下exception: InvalidCastException: Cannot create a DbSet from a non-generic DbSet for objects of type ‘User’ : var nonGeneric = context.Set(typeof(User)); var generic = nonGeneric.Cast(); //Exception in here User类正在实现IUser,所以你会认为强制转换不应该是一个问题,除非DbSet代码被限制在具体的类中(我希望不是我需要创建一个围绕非genericsDbSet的包装器将它转换为genericsDbSet或找到当前DbSet实现的替代方案)。 如果你想知道为什么我使用接口,即使它们目前不受微软支持我给你一些解释(希望这会过滤掉“不要那样做”而不是提供解决方案的响应): 我正在使用MEF和EntityFramework创建一个松散耦合的数据层引擎,通过它我可以为每个项目提供实体(及其相应的配置)。 我一直在广泛使用Interfaces来定义引擎。 使用MEF在运行时发现元数据和上下文中实体的具体实现。 摘自代码 [TestMethod] public void TestIfItWorks() { //TODO: Please […]

在Entity Framework Core中启用原始SQL日志记录

如何启用DbCommand原始SQL查询的日志记录? 我已将以下代码添加到我的Startup.cs文件中,但未看到Entity Framework Core中的任何日志条目。 void ConfigureServices(IServiceCollection services) { services.AddLogging(); } public void Configure(IApplicationBuilder app, IHostingEnvironment env, ILoggerFactory loggerFactory) { loggerFactory.AddConsole(Configuration.GetSection(“Logging”)); loggerFactory.AddDebug(LogLevel.Debug); } 我期待看到这样的事情: Microsoft.EntityFrameworkCore.Storage.Internal.RelationalCommandBuilder… SELECT [t].[Id], [t].[DateCreated], [t].[Name], [t].[UserName] FROM [Trips] AS [t]

EF4 Code First:如何仅更新特定字段

如何仅更新实体上的某些字段? 我有一个像这样的用户实体: public class User { public string UserId { get; set; } public string PasswordHash { get; set; } public bool IsDisabled { get; set; } public DateTime AccessExpiryDate { get; set; } public bool MustChangePassword { get; set; } public DateTime DateCreated { get; set; } public DateTime LastActivity { get; set; } […]

.net中的存储库模式和inheritance

我对存储库设计模式很陌生,在尝试实现它时,我已经达到了死胡同,关于inheritance。 即使我开始朝着正确的方向前进,我也不确定。 所以基本上我将有一个抽象基类Product,例如id和imagePath,并且将有几个inheritance自此的产品。 namespace Common { public abstract class Product { public int Id { get; set; } public string ImgPath { get; set; } } public class Scale : Product { public int AdditionalProperty { get; set; } } } 现在存储库如下: public class BaseRepository { protected TEstEntities1 _dataContext = new TEstEntities1(); public BaseRepository() { […]

如何删除Linq to Entity中的多个记录?

我在sql中有一个tblA: id int (primary key) fid int tblA中的数据是: 1 1 2 1 3 2 4 2 5 3 6 3 我通过以下代码删除一条记录 : DatabaseEntities obj = new DatabaseEntities(); int i = 2; tblA t = obj.tblA.Where(x => x.fid == i).FirstOrDefault(); obj.DeleteObject(t); obj.SaveChanges(); 我通过以下代码删除多条记录: DatabaseEntities obj = new DatabaseEntities(); int i = 2; while (obj.tblA.Where(x => x.fid […]

如何更快地运行此entity framework示例

我有这个代码用于向数据库添加大约1500条记录: async void button7_Click(object sender, EventArgs e) { var task = await Task.Run(() => { Random rnd = new Random(); for (int i = 0; i <= 1500; i++) { db.Tbls.Add(new Tbl() { Name = "User" + i + 1, Num = rnd.Next(10, i + 10) / 10 }); progress.Report(i * 100 / 1500); } […]

entity framework动态Where子句

我有一个查询: var function = GetSomeExpression(); using (FooModel context = new FooModel()) { var bar = context.Bar.Where(function); } 我想创建一个generics方法,可以在上下文中针对不同的实体执行Where。 目标不是必须做context.Bar.Where,context.Car.Where,Context.Far.Where等。 一些无法完成的事情,但说明了目标是: var q = context.GetObjectContext(T).Where(queryFunction); 我已经研究过使用Relfection并且可以获取Where方法,但是不知道如何针对在委托中传递的上下文执行它。 我也看过DynamicMethod,但做整个IL事情并不喜欢吸引人。 到目前为止我所拥有的: private List GetResults(Expression<Func> queryFunction) { // note: first() is for prototype, should compare param type MethodInfo whereMethod = typeof(Queryable).GetMethods() .Where(m => m.Name == “Where”) .First().MakeGenericMethod(typeof(T)); // invoke the […]