Tag: entity framework

如何在EF代码中禁用级联删除链接表?

我想要使​​用entity frameworkcode-first禁用级联删除链接表。 例如,如果许多用户有很多angular色,并且我试图删除一个angular色,我希望该删除被阻止, 除非当前没有用户与该angular色关联。 我已经删除了我的OnModelCreating中的级联删除约定: protected override void OnModelCreating(DbModelBuilder modelBuilder) { … modelBuilder.Conventions.Remove<OneToManyCascadeDeleteConvention>(); 然后我设置了用户angular色链接表: modelBuilder.Entity<User>() .HasMany(usr => usr.Roles) .WithMany(role => role.Users) .Map(m => { m.ToTable("UsersRoles"); m.MapLeftKey("UserId"); m.MapRightKey("RoleId"); }); 然而,当EF创build数据库时,它会为外键关系创build一个删除级联,例如。 ALTER TABLE [dbo].[UsersRoles] WITH CHECK ADD CONSTRAINT [FK_dbo.UsersRoles_dbo.User_UserId] FOREIGN KEY([UserId]) REFERENCES [dbo].[User] ([UserId]) ON DELETE CASCADE GO ALTER TABLE [dbo].[UsersRoles] WITH CHECK ADD CONSTRAINT [FK_dbo.UsersRoles_dbo.Role_RoleId] FOREIGN […]

使用entity framework实体作为业务对象?

我正在使用来自Microsoft的entity frameworkO / R映射器,并将实体类(映射到数据库对象的生成类)用作业务对象。 这个可以吗? 请说明你的利弊。 在业务层和表示之间进行WCF通信的情况下,如何将这些对象作为数据成员发送?

如何禁用entity framework6.0中的迁移

我试图忽略使用Entity Framework 6.0 rc1的“自动”迁移。 我的问题是,我现在不想要这个function,每当我的应用程序运行,我可以看到所有的实体日志试图创build所有的表。 期待谢谢。

针对传统数据库的CodeFirst EF4.1 MVC – 多重性冲突

不pipe我把它混在一起,它给我错误。 我有一种感觉,我失去了一些明显的东西,因为我不断收到这些错误。 在模型生成期间检测到一个或多个validation错误: System.Data.Edm.EdmAssociationType::多重性与“Venue_Courses”关系中angular色“Venue_Courses_Source”中的参照约束冲突。 由于从属angular色中的所有属性都是不可空的,所以主体angular色的多重性必须为“1”。 System.Data.Edm.EdmAssociationEnd::多重性在“Venue_Courses”关系中的“Venue_Courses_Target”angular色中无效。 因为依赖angular色是指关键属性,所以依赖angular色的多重性的上界必须是1。 一个课程只能有一个场地,场地可以被很多课程使用 public class Course { [Key] public virtual int Id { get; set; } public string Title { get; set; } public DateTime StartDate { get; set; } public int VenueId { get; set; } public virtual Venue Venue { get; set; } } public class Venue { […]

嘲笑或伪造DbEntityEntry或创build一个新的DbEntityEntry

继我的另一个关于嘲笑DbContext的问题之后。我还有一个关于嘲笑EF Code First的问题。 我现在有一个我的更新的方法如下所示: if (entity == null) throw new ArgumentNullException("entity"); Context.GetIDbSet<T>().Attach(entity); Context.Entry(entity).State = EntityState.Modified; Context.CommitChanges(); return entity; 上下文是我自己的DbContext的一个接口。 我正在跑的问题是,我该如何处理 Context.Entry(entity).State 。 我已经介绍了这个代码,当我有一个真正的DbContext作为我的Context接口的实现时,它就起作用了。 但是当我把虚假的背景放在那里时,我不知道如何处理它。 DbEntityEntry类没有构造函数,所以我不能只在我的假上下文中创build一个新的构造函数。 有没有人在CodeFirst解决scheme中嘲笑或伪造DbEntityEntry? 还是有更好的方法来处理状态变化?

“代码优先从数据库”模板不显示在Visual Studio实体数据模型向导中

根据本文中的 Microsft,当在步骤3中的“ADO.NET实体数据模型”下向项目添加新项目时,应该看到“Code First From Database”的选项。 我只看到以下内容 我已经使用nuget安装了EF 6.1,我正在使用Visual Studio 2012 Ultimate ..我错过了什么?

查询的结果不能被枚举多次

我正在使用entity framework(EEF),并得到以下错误: “查询的结果不能一次枚举”。 我有一个包含ef数据上下文的存储库类。 然后我有一个控制器类(不要与MVC控制器混淆),其中包含存储库的一个实例。 到目前为止这么好…我有一个控制器上的search方法应该返回一个RadComboBoxItemData数组,用于填充Telerik RadComboBox控件。 public RadComboBoxItemData[] Search(int id, string searchText) { var query = context.Search(id, searchText); List<RadComboBoxItemData> result = new List<RadComboBoxItemData>(); foreach (var item in query) { RadComboBoxItemData itemData = new RadComboBoxItemData(); itemData.Text = ""; // assign some text here..; itemData.Value = ""; /*assign some value here..*/ result.Add(itemData); } return result.ToArray(); } […]

entity framework在运行时更改连接

我有一个Web API项目引用我的模型和DAL程序集。 用户将看到一个login屏幕,他可以在其中select不同的数据库。 我build立连接string如下: public void Connect(Database database) { //Build an SQL connection string SqlConnectionStringBuilder sqlString = new SqlConnectionStringBuilder() { DataSource = database.Server, InitialCatalog = database.Catalog, UserID = database.Username, Password = database.Password, }; //Build an entity framework connection string EntityConnectionStringBuilder entityString = new EntityConnectionStringBuilder() { Provider = database.Provider, Metadata = Settings.Default.Metadata, ProviderConnectionString = sqlString.ToString() }; […]

EF代码优先:如何获得随机行

我怎样才能build立一个查询,我会检索随机行? 如果我在SQL中编写它,那么我将在newid()上放置一个命令,并从顶部砍掉n个行。 无论如何要在EF代码中做到这一点? 我已经尝试创build一个使用newid()并使用DbSet.SqlQuery()执行它的查询。 虽然它的工作,它不是最干净的解决scheme。 另外,试着检索所有的行,并通过一个新的GUIDsorting。 尽pipe行数相当小,但它仍然不是一个好的解决scheme。 有任何想法吗?

LINQ to Entities减去2个date

我正在尝试使用entity framework来确定使用LINQ的两个date之间的天数。 它告诉我,它不能识别System.TimeSpan类中的减法 这是我的LINQ查询的哪一部分。 where ((DateTime.Now.Subtract(vid.CreatedDate).TotalDays < maxAgeInDays)) 这里是我在VS.NETdebugging器中收到的错误 {“LINQ to Entities不能识别'System.TimeSpan Subtract(System.DateTime)'方法的方法,而且这个方法不能被转换成存储expression式。 我做错了什么或者是否有更好的方法来获得entity framework中的2个date时间之间的天数? 谢谢Michael