Tag: entity framework 6

entity framework中的可选一对多关系

我在解决可选的一对多关系问题时遇到了问题。 我的模型是: public class Person { public int Identifier { get; set; } … public virtual Department Department { get; set; } } public class Department { public int Identifier { get; set; } … public virtual IList Members { get; set; } } 我想为一个Person分配零个或一个Department 。 分配后, Person应显示在Department的Members -List中。 我正在使用Fluent API配置Person ,如下所示: HasKey(p => p.Identifier); […]

entity framework可查询的多个.Where()子句

我正在尝试使用Entity Framework实现复杂的filter:我想根据我提供的搜索条件向可查询对象添加where子句。 我可以在Entity Framework 6中执行以下操作吗? var queryable = db.Users.Where(x => x.Enabled && !x.Deleted); // Filter var userId = User.Identity.GetUserId(); queryable.Where(x => x.AspNetUser.Id == userId); queryable.Where(x => x.Status >= 2); // …etc 我知道我能做到: var queryable = db.Users .Where(x => x.Enabled && !x.Deleted) .Where(x => x.AspNetUser.Id == userId) .Where(x => x.Status >= 2); 但是我没有得到这个解决方案的预期结果。 它似乎忽略了第二秒的条款。

entity framework代码First MaxLength和FixedLegth(char vs varchar)

我有一个entity frameworkCodeFirst模型,我从现有的数据库创建,我想使用DataAnnotations以不同的方式装饰一些char和varchar。 char和varchar之间的区别在于Char具有固定长度并且varchar具有可变长度。 对于Varchar我正在使用[Maxlength(length)]对于char这是正确的方法还是有更好的方法来定义类中的字符串属性被映射为数据库中的char?

无法在Entity Framework中使用AddRange自动生成IDENTITY

我不知道它是entity framework的设计选择还是代表我的错误方法,但每当我尝试将AddRange实体添加到DbSet时,我似乎无法获得自动生成的IDENTITY字段。 [Table(“entities”)] public class Entity { [Key] [Column(“id”)] public long Id { get; set; } [Column(“field”)] public string Field { get; set; } } var entities = new Entity[] { new Entity() { Field = “A” }, new Entity() { Field = “B” }, }; _dbContext.Entities.AddRange(entities); await _dbContext.SaveChangesAsync(); //ids are still default(long) at this […]

如果我在IQueryable上使用等待+ ToListAsync()并且未定义为任务,那么它是否正确

我正在使用带有EF-6的asp.net MVC-5,我不确定使用await + ToListAsync是否有效。 例如,我有以下存储库方法,它返回IQueryable: – public IQueryable getAllScanEmailTo() { return t.TSets.Where(a=>a.Name.StartsWith(“ScanEmail”)); } 我称之为: – var emailsTo = await repository.getAllScanEmailTo().ToListAsync(); 一开始,我以为我会得到一个错误,因为我正在使用“等待”一个未被定义为任务的方法,但上面工作得很好,所以有人可以就此提出建议吗?

使用DateDiff和Linq.Dynamic库获取今天的记录

我试图通过MVC 5 / Entity Framework 6应用程序中的Linq表达式使用DateDiff SQL语法获取今天添加的所有记录。 DateDiff函数抛出运行时错误 实际上我想用以下linq WHERE子句来解析linq动态 .Where(p => DbFunctions.DiffDays(p.added_date, DateTime.Now) == 0) 为了获取今天添加的记录。 我正在使用的示例代码如下所示 var _list = new vsk_error_log(); using (var entities = new vskdbEntities()) { _list = entities.vsk_error_log //.Where(“DateDiff(DAY,added_date,getdate())=0”) .Where(p => DbFunctions.DiffDays(p.added_date, DateTime.Now) == 0) .ToList(); } return _list; 关于Linq.Dynamic表达式 – 如何编写where子句 LINQ中的动态WHERE子句

EF 6带有dnx项目

我有一个新的ASP.net 5 dnx类库,我用于entity framework。 我需要针对EF 6,因为我需要的一些function不在EF 7中。 首先,EF工具(如启用迁移)不存在。 我添加了一个旧的样式类库并安装了EF 6,现在命令就在那里。 当我运行启用迁移时,我收到此错误: PM>启用 – 迁移 使用“2”参数调用“SetData”的exception:“在程序集中键入’Microsoft.VisualStudio.ProjectSystem.VS.Implementation.Package.Automation.OAProject’,Microsoft.VisualStudio.ProjectSystem.VS.Implementation,Version = 14.1。 0.0,Culture = neutral,PublicKeyToken = b03f5f7f11d50a3a’未标记为可序列化。“ 在D:\ Projects \ Rebus \ FMS \ Code \ Current \ FMSSupport \ FMSSupport \ packages \ EntityFramework.6.1.3 \ tools \ EntityFramework.psm1:720 char:5 + $ domain.SetData(’startUpProject’,$ startUpProject)+ ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ + CategoryInfo:NotSpecified:(:) [],MethodInvocationException + FullyQualifiedErrorId:SerializationException […]

Identity Owin是否需要LazyLoading?

tl; dr:Identity似乎要求禁用LazyLoading; 这是真的,什么是最干净的解决方法? 我使用EntityFramework 6.0.2,Identity EntityFramework 1.0.0和Identity Owin 1.0.0对一个简单的C#ASP.NET 4.5.1 MVC-5 Web应用程序进行了一些基本的AB测试,看来Owin要求延迟加载不是在ApplicationContext构造函数中禁用。 要复制该问题,只需使用Visual Studio 2013创建一个快速的MVC应用程序,使用MVC模板,将所有内容保留为默认值,但取消注释该行:’app.UseGoogleAuthentication();’ 在App_Start / Startup.Auth.cs中。 运行该应用程序并使用Google登录,完成它带您到的缩写注册页面并转到帐户/管理。 您应该会在底部看到2个Google按钮。 停止应用程序。 现在转到ApplicationContext.cs并更改构造函数,如下面的代码片段所示: public ApplicationContext() : base(“DefaultConnection”) { } //Works! public ApplicationContext() : base(“DefaultConnection”) { this.Configuration.LazyLoadingEnabled = false; } //Does not work 重试测试。 只能显示1个Google按钮。 如果LazyLoadingEnabled = false,则不会加载用户角色,登录(也可能是索赔)。 我的理论是,这是微软的监督/“未来特征”,因为Identity EntityFramework和Identity Owin都是版本1.0.0。 我的问题是,这个测试能否得到确认,最干净的工作是什么? 出于我的目的,我将使用.ToList()和其他方法在我想使用它时强制执行EagerLoading。 我并不真的需要禁用LazyLoading,如果你想总是使用预先加载,它只是一种更安全的代码编写方式。 即你错过了一个地方,它使它生产,你有一个很好的错误,在某些视图中你正在迭代模型和Model.xy y == […]

忽略Entity Framework 6中的所有属性,但忽略一些属性

我想使用Entity Framework在数据库上保留一些数据。 我有一些更大的POCO但我只想存储一些属性。 我知道我可以使用Ignore()方法通过Fluent API实现这一点。 但是,是否有可能不仅忽略已定义的属性而且忽略所有属性但定义的属性? 所以如果你有这样的POCO: public class MyPoco { public int Id { get; set; } public string Name { get; set; } . . . public int SomeSpecialId { get; set; } } 而你只想存储Id和SomeSpecialId ,你会这样做: protected override void OnModelCreating(DbModelBuilder builder) { builder.Entity().Ignore(x => x.Name); builder.Entity().Ignore(x => x.WhatEver); . . . // ignore […]

entity framework6的多个上下文,跨dbcontexts的引用实体

我正在使用通用的UnitOfWork编写两个MVC5(使用EF6和代码优先)Web应用程序,它获取Unity注入的dbContext。 我们需要有两个数据库(主数据库和项目特定数据库),并在两者之间有一个参考。 这是一个例子: 在主要上下文中我有一个实体Employee 在项目环境中,我有一个实体Department 我需要在我的项目中创建Departments,从Main组织和组织Employees。 我能有……吗… ICollection Employees { get; set; } 在Project DB的Department实体中? (员工和部门之间的关系是多对多的) 你会怎么做这样的事情?