Tag: entity framework

entity framework4.1不向SQL Server Express数据库添加任何行

使用带有SQL Server Express .mdf数据库的Entity Framework 4.1。 出于测试目的,我尝试在WPF应用程序中使用实体模型在SQL Server Express数据库上执行CRUD操作。 我是这个概念的新手,我按照video教程进行了编码 我创建了单个非常简单的表的实体模型。 我在cs文件中编写了简单的代码,使用以下代码执行向数据库添加一行 testEntities db = new testEntities(); TestTable tb = new TestTable(); tb.Name = txtName.Text; tb.Email = txtMail.Text; db.TestTables.AddObject(tb); db.SaveChanges(); 但如果我回去检查数据库,则不会添加任何数据。 请告诉我这里出了什么问题? 这是我的连接字符串

PostSharp将k__Backing字段插入实体类,导致数据库生成失败

我正在使用C#中的Microsoft Entity Framework和CodeFirst创建数据库。 我想在WPF应用程序中使用数据库,因此实体类应该实现“INotifyPropertyChanged”。 这可以使用PostSharp方面非常优雅地完成,PostSharp方面每次属性更改时自动触发PropertyChanged事件。 如果我创建这样的方面并在我的实体类上使用它,我在尝试创建数据库时会得到以下例外: \tSystem.Data.Entity.Edm.EdmNavigationProperty: Name: The specified name is not allowed: ‘k__BackingField’. 显然,PostSharp会创建一个名为“k__BackingField”的属性,导致数据库创建失败,因为从EntityFramework的角度来看,它是一个无效的名称。 有没有办法绕过这个错误而不在每个实体类中手动实现“INotifyPropertyChanged”? PS:英语不是我的母语,如果你告诉我发帖中可能出现的错误,我将非常感激。 先感谢您

如何在单个entity framework查询中返回许多子集合Count()

我在Entity Framework中有两个实体,Parent和Child。 父级有一组子实体。 在我的查询中,我想只返回父实体(完全类型的EF类型)以及子实体的Count()(这可以设置为Parent上的属性),但我只想在一次调用数据库,无需编写自定义S-Proc。 这可能吗? 基本的,我想把它变成一个单一的查询: EFContext content = new EFContext(); IQueryable parentQuery = context.Parent.Select(); foreach(Parent parent in parentQuery) { parent.NoChildItems = parent.Childs.Count(); } 当我在此激活枚举器时,它会调用列表的数据库,并再次为每个Count()查询调用。 我每次返回大约100件物品,所以宁愿不为儿童物品的数量做100个单独的电话。 谢谢你的帮助。

如何在SQL事件探查器中查看SQL查询?

当我发布更新查询或其他更改数据库中的数据的数据操作语言(DML)查询时,使用Entity Framework 4,如何查看发送到SQL Server的查询? 假设我做了类似的事情: someEntityObjectInstance.SomeProperty = newValue; context.SaveChanges(); 在这种情况下,没有ObjectQuery来执行ToTraceString(),所以我无法真正看到幕后发生了什么。 我相信有一些Microsoft SQL Server工具,比如探查器或者可以帮助我查看查询的东西。 另外,我认为VS 2010 Ultimate中的一些Intellitrace会做同样的事情吗? 你有没有可以教我如何使用SQL 2005 Profiler,如果有这样的事情? 更新 我正在查看SQL Server 2005 Profiler中的跟踪,但是当我发出context.DeleteObject()调用或更新对象并调用context.SaveChanges() ,我在Profiler中看不到UPDATE或DELETE查询。 我只看到奇怪的SELECT查询。

EF代码优先:插入多对多

post可以有很多主题。 可以将主题分配给许多post。 添加从主题列表中选择的两个主题的post时,还会将两个NULL主题插入到我的主题表中。 见Id=34和35 。 我做错了什么? 不应该改变主题。 我正在添加一篇新post并从固定数量的主题中选择主题(下拉列表)。 它在PostTopics表(PostID,TopicID)中被跟踪。 主题表: Id TopicName TopicDesc 31 Sports Sports 32 Game Game 33 Politics Politics 34 NULL NULL 35 NULL NULL TopicPosts表: Topic_Id Post_Id 34 11 35 11 public class Post { public int Id { get; set; } public int UserId { get; set; } public virtual […]

为什么没有等同于WillCascadeOnDelete的更新?

当你在EF代码中设置一个:多个关系时,你可以选择它是否应该像删除一样级联: modelBuilder.Entity() .HasRequired(asmt => asmt.CreatedByUser) .WithMany(usr => usr.Assessments) .HasForeignKey(asmt => asmt.CreatedByUserId) .WillCascadeOnDelete(true); 这转换为外键定义的SQL ON DELETE CASCADE部分,即。 ALTER TABLE [dbo].[Assessment] WITH CHECK ADD CONSTRAINT [FK_dbo.Assessment_dbo.User_CreatedById] FOREIGN KEY([CreatedById]) REFERENCES [dbo].[User] ([UserId]) ON DELETE CASCADE GO 但是,Fluent API中似乎没有类似的方法允许您控制ON UPDATE CASCADE的值,即。 像.WillCascadeOnUpdate()这样的东西。 为什么不?

entity framework:路径中的非法字符。 (连接字符串)(MVC3)

我只是无法解决这个问题: 我正在尝试在我的MVC3项目中使用entity framework。 但每次我调用Entities context = new Entities(); 我收到此错误:路径中的字符非法。 我知道这与我的connectionstring有关,如下所示: metadata=res://*/Models.Model.csdl|res://*/Models.Model.ssdl|res://*/Models.Model.msl;provider=System.Data.SqlClient;provider connection string="Data Source=.\SQLEXPRESS;Initial Catalog=databasename;Persist Security Info=True;User ID=username;Password=password;MultipleActiveResultSets=True" 我使用Reflector来查明是否正确嵌入我的程序集中的资源,答案是肯定的,它们完全嵌入我的程序集中作为Models.Model.csdl,.ssdl和.msl … 我的模型与我正在尝试连接的程序集相同,并且未被引用,这意味着通配符*应该可以正常工作。 ConnectionString与向导生成的完全相同…… [ArgumentException: Illegal characters in path.] System.IO.Path.CheckInvalidPathChars(String path) +142 System.IO.Path.Combine(String path1, String path2) +46 System.Web.Compilation.DiskBuildResultCache.GetBuildResult(String cacheKey, VirtualPath virtualPath, Int64 hashCode, Boolean ensureIsUpToDate) +41 System.Web.Compilation.BuildManager.GetBuildResultFromCacheInternal(String cacheKey, Boolean keyFromVPP, VirtualPath virtualPath, Int64 hashCode, Boolean ensureIsUpToDate) +237 […]

asp.net CORE Migrations生成为空

我正在尝试按照教程添加从IdentityDbContext和IdentityUser生成的迁移(第二个)。 当我运行dotnet ef migration add 添加,但UP和DOWN为空。 我发现从EFMigrationHistory表中删除数据可以解决问题,但该表不包含有关该迁移的任何信息,仅包含已创建的第一个。 我尝试删除所有.TMP文件,删除并重新创建迁移。 WorldUser: namespace TheWorld.Models { public class WorldUser : IdentityUser { public DateTime FirstTrip { get; set; } } } WorldContext: namespace TheWorld.Models { public class WorldContext : IdentityDbContext { private IConfigurationRoot _config; public WorldContext(IConfigurationRoot config,DbContextOptions options) : base(options) { _config = config; } …. 奇怪的是,它昨天不起作用,今天早上我尝试删除所有.TMP文件,迁移,并通过CMD重新创建它,它生成了一个看起来正确的迁移,但是愚蠢的,我删除了它,因为它有错误的名称,因为重新创建它不再起作用。

使用具有MySQL DB的entity framework和模型设计器不会拾取存储的proc参数

我有最新的Mysql连接器,允许您使用Visual Studio Entity Framework设计器。 它工作得很好,但我刚添加了一个存储过程。 服务器资源管理器使用指定的参数将其加载完好,但随后我将其添加到实体模型中,并且它生成的代码没有任何输入参数。 这是存储过程 CREATE PROCEDURE `GetViewableMenuNodes`(IN siteId INT, IN parentId INT, IN userName varchar(255)) BEGIN select m.* from menunode m where m.siteid = siteId and m.showinmenu = 1 and m.parentid = parentId and m.viewername = userName; END 这是模型生成的代码 public global::System.Data.Objects.ObjectResult GetViewableMenuNodes() { return base.ExecuteFunction(“GetViewableMenuNodes”); }

如何在winforms中使用EF进行双向数据绑定?

我很擅长编码。 现在我要告诉你我目前的情况和我想去的地方。 希望你会帮忙。 我正在使用EF5.0数据库第一种方法,我希望能够使用gridviews列出和更新数据库值。 目前我正在绑定我的数据,如下所示: pehlivan_kabametrajEntities ctx = new pehlivan_kabametrajEntities(); var result = from k in ctx.Kolons select k; dataGridView1.DataSource = result.ToList(); 此代码完美地列出了我的数据。 但是,对我的需求来说,这是错误的或不够的。 因为我希望能够在gridview上编辑我的数据。 请告诉我有什么问题,我应该怎么做。 至少链接的一些文件会让我到达我想要的目的地点,这将是很棒的。 谢谢。