Tag: entity framework 6

使用数据注释创建外键

在下面的代码中,我需要在ParentInfoAddProperties.ParentQuestionAnswersId上设置一个外键constrant,以便它依赖于ParentQuestionAnswers.Id(这是一个主键)。 我试图使用数据注释,但entity framework6想要在我的ParentQuestionAnswers表中创建一个新的外键列,该列引用ParentInfoAddProperties.Id列而不是ParentInfoAddProperties.ParentQuestionAnswersId列。 我不希望Entity Framework创建新的外键列。 如果有人能够解释我应该指定哪些数据注释或(如果需要)流畅的映射来实现所需的外键实例,我将不胜感激。 提前致谢。 namespace Project.Domain.Entities { public class ParentQuestionAnswers { public ParentQuestionAnswers() { ParentInfoAddProperties = new ParentInfoAddProperties(); } [Required] public int Id { get; set; } [Required] public int UserId { get; set; } public ParentInfoAddProperties ParentInfoAddProperties { get; set; } } public class ParentInfoAddProperties { [Required] public int Id { […]

我们可以使用枚举作为类型安全实体ID吗?

我们正在使用EF 6.1代码首次设置中的一个相当大的模型,我们正在使用实体ID的int。 不幸的是,这并不像我们想要的那样类型安全,因为人们可以很容易地混合id,例如比较不同类型的实体(myblog.Id == somePost.Id)或类似的ID。 甚至更糟:myBlog.Id ++。 因此,我提出了使用类型ID的想法,因此您无法混淆ID。 所以我们需要为我们的博客实体提供BlogId类型。 现在,显而易见的选择是使用包装在结构中的int,但不能使用结构作为键。 而你无法扩展… …等等,你可以! 使用枚举! 所以我想出了这个: public enum BlogId : int { } public class Blog { public Blog() { Posts = new List(); } public BlogId BlogId { get; set; } public string Name { get; set; } public virtual List Posts { get; set; } […]

如何以编程方式在Entity Framework 6中为MS SQL创建连接字符串?

如何以编程方式在Entity Framework 6中为MS SQL创建连接字符串? 我正在使用c#和WPF,我想知道是否有人可以告诉我如何或链接我一个资源,显示如何在EF 6中以编程方式设置连接字符串.MSDN文章解释说你可以http://msdn.microsoft #com / en-us / data / jj680699#moving但它不会创建实际的连接字符串。 所以这是一个有效的EF6示例 App.Config中 entityFramework codeConfigurationType =“WPFwithEF.SqlConfiguration,WPFwithEF”> / entityFramework 上下文 public class ProductContext : DbContext { public ProductContext():base(“Wpf”) { } public DbSet Categories { get; set; } public DbSet Products { get; set; } } Configuration.cs namespace WPFwithEF { public class SqlConfiguration : DbConfiguration […]

entity framework不生成ObservableCollection

我在我的dataentry程序中使用EF6。 EF不会生成ObservableCollection而是生成HashSet和ICollection,因此我必须手动更改它。 不幸的是,每次我从数据库更新模型时,每个多元关系都会回到ICollection …

代码优先:将实体映射到现有数据库表

我使用entity framework6代码优先与现有数据库,但在将我的实体映射到数据库表时遇到问题。 通常,我会使用数据库优先方法并生成我的实体和上下文代码,但使用设计器已经成为一个巨大的痛苦。 我已经设置了Database.SetInitializer(null),因为我不希望EF更改我的架构。 数据库架构: 守则一: public class Project { public int ProjectId { get; set; } public string Name { get; set; } public string Description { get; set; } } public class ReleaseControlContext : DbContext { public ReleaseControlContext() : base(ConfigurationManager.ConnectionStrings[“ReleaseControl”].ConnectionString) { Database.SetInitializer(null); } public DbSet Projects { get; set; } } 调用代码: using(var […]

使用Include时阻止entity framework添加ORDER BY

我们有类似以下的查询: from x in db.Table.Include(x => x.Parent) .Include(x => x.Parent.Relation) .Include(x => x.Relation) .Include(x => x.Children) where /* some query */ select x 问题是,当添加.Include(x => x.Children) ,Entity Framework添加到生成的SQL的ORDER BY语句会导致查询花费很长时间来执行 – 如下所示: ORDER BY [Project2].[Id1] ASC, [Project2].[Id2] ASC, [Project2].[Id] ASC, [Project2].[C4] ASC 将orderby添加到linq查询也没有帮助,除了添加额外的列以进行排序之外,它不会影响上述语句。

如何在EF6 Code First中使用generics类型与数据库上下文

例如,假设我有4个不同的实体,每个实体都实现一个将实体添加到数据库的Add()方法: public class Profile { … public void Add() { this._dbContext.Profile.Add(this); this._dbContext.SaveChanges(); } … } 现在我希望有一个generics类在一个抽象类而不是X个类中实现这种行为。 所以我尝试了以下内容: public abstract class Entity where TEntity : class { protected DbContext _dbContext; protected Entity() { this._dbContext = new SMTDBContext(); } public void Add() { this._dbContext.Set().Add(this); this._dbContext.SaveChanges(); } } 当然它并不是因为“这个”不是一个TEntity ……但它将在未来! 到目前为止,我试图寻找做类似事情的人没有成功。

在代码优先环境中从包管理器控制台更新数据库

代码第一环境 我正在尝试从包管理器控制台更新数据库。如果我的Domain类发生更改,我必须删除并创建数据库,而不是删除数据库,我如何更新数据库。 我已经尝试通过阅读谷歌的一些博客。 命令 PM> Install-Package EntityFramework 通过使用此命令,我成功安装了Entity Framework。 PM> Enable-Migrations 通过使用此命令,它在我的项目中创建了迁移文件。 PM> Update-Database 通过使用此命令,我可以更新表,但我有一个问题 。 错误 指定’-Verbose’标志以查看应用于目标数据库的SQL语句。 System.Data.SqlClient.SqlException(0x80131904):建立与SQL Server的连接时发生与网络相关或特定于实例的错误。 服务器未找到或无法访问。 validation实例名称是否正确,以及SQL Server是否配置为允许远程连接。 怀疑就在这里 有时如果POCO类中只有一个字段发生变化,它可能会更新。 例如,我已经更新了更多的Domain类 ,如何从Package Manager Console更新数据库。 任何的想法 ?

如何使用空格搜索邮政编码的半径?

背景 我正在编写一个应用程序,它可以在邮政编码的某个半径范围内查找事件。 您可以将其视为票务管理员,您可以在其中输入您的邮政编码,并显示半径为x的所有音乐会。 我有一个数据库表,其中包含邮政编码,每个邮政编码都有“纬度和经度”。 我还有一个’EventListings’表,其中每个’Event’都有一个ZipCode字段。 问题 目前,我在服务层的Linq-to-Entities查询中使用Haversine公式来查找哪些事件在半径范围内。 现在,我将它用作where子句中的filter。 我也想把它放在select子句中,所以我可以在网站上显示“这距离4.6英里”,等等。 我无法将此代码移动到单独的C#方法中,因为Linq-to-Entities会抱怨它无法将其转换为sql,因此我也会在select语句中复制整个公式。 这非常难看。 我试着解决它。 我试过的 我编辑了Entity,并添加了一个特殊的标量属性“DistanceFromOrigin”。 然后,我创建了一个存储过程,它返回了所有实体数据,以及新字段“DistanceFromOrigin”的硬编码值(用于测试目的)。 然后我开始意识到我不能告诉entity framework使用我的sproc在EventListings实体上的select语句…… Phil提出了spatials,这就是我的意思。 题 如何使用Spatials搜索邮政编码范围内的事件?

如何从ChangeTracker获取原始实体

有没有办法从ChangeTracker (而不仅仅是原始值)获取原始实体本身? 如果State是Modified ,那么我想我可以这样做: // Get the DbEntityEntry from the DbContext.ChangeTracker… // Store the current values var currentValues = entry.CurrentValues.Clone(); // Set to the original values entry.CurrentValues.SetValues(entry.OriginalValues.Clone()); // Now we have the original entity Foo entity = (Foo)entry.Entity; // Do something with it… // Restore the current values entry.CurrentValues.SetValues(currentValues); 但这似乎并不是很好,我确信它有问题,我不知道……有更好的方法吗? 我正在使用Entity Framework 6。