Tag: entity framework

对于entity framework中的所有情况,存储过程返回-1

CREATE PROC spIsValidUser @UserName varchar(50), @Password varchar(50) AS IF Exists(SELECT * FROM Users where UserName=@UserName and Password=@Password) BEGIN return 0 END ELSE BEGIN return 1 END GO 我已创建此Stored Procedure并使用entity framework调用此Stored Procedure 。 下面是用C#编写的代码。 MyBusEntities db = new MyBusEntities(); int empQuery = db.spIsValidUser(“abc”, “abc@123”); spIsValidUser Stored Procedure在所有情况下都返回-1 。 请告诉我错误。 编辑 – 根据给定的答案,存储过程不使用return语句,因为entity framework不能支持存储过程返回开箱即用的标量值。让我知道如何从Stored Procedure发送标量数据?

带有entity framework的强类型ASP.NET MVC

此代码无法实际保存任何更改: // // POST: /SomeType/Edit/5 [AcceptVerbs(HttpVerbs.Post)] public ActionResult Edit(Guid id, SomeType Model) { db.AttachTo(Model.GetType().Name, Model); db.ApplyPropertyChanges(Model.EntityKey.EntitySetName, Model); db.SaveChanges(); return RedirectToAction(“Index”); } ASP.NET MVC将对象Model创建为Department类型EntityObject,其EntityState值为Detached 。 使用AttachTo方法后,其EntityState变为Unchanged 。 附加对象的MSDN(entity framework) 对象以Unchanged状态附加到对象上下文。 由于其Unchanged状态, ApplyPropertyChanges方法不执行任何操作。 我想让它改为状态。 关于EntityState枚举的MSDN 超脱 该对象存在但对象服务未对其进行跟踪。 在创建实体并将其添加到对象上下文之前,实体立即处于此状态。 通过调用Detach方法或使用NoTrackingMergeOption加载实体后,实体也处于此状态。 不变 该对象尚未被修改,因为它已加载到上下文中或自上次调用SaveChanges方法以来。 改性 对象已更改,但尚未调用SaveChanges方法。 我无法将EntityObject的EntityState属性显式设置为Modified 。 它是只读的。 使用EntityObjects的强类型MVC控制器是不是不可能?

怎么才能得到linq的计数

我有一个名为带列的products的表: productid , productname, productprice categoryid 我的问题是我想根据产品名称和细节获得产品数量。 我想在DataGridView显示数据。 我如何知道单个产品名称的产品数量,如下所示? productid productname productavailable productprice ————————————————————————– 1 product A 2 products(product A) 100 2 product B 5 Products(product B) 200 像上面的表格一样,我必须在DataGridView显示。 我正在使用LINQ和C#,我的DbContext名称是tsgdbcontext 。

SQL语句的某些部分嵌套太深。 重写查询或将其分解为较小的查询

我在我的控制器中有动作调用以下方法: public IQueryable getcontactinfo(long[] id) { var organizationsiteids = from accountsitemapping in entities.AccountSiteMappings where id.Any(accountid => accountsitemapping.ACCOUNTID == accountid) select accountsitemapping.SITEID; var usersdepts = from userdept in entities.UserDepartments join deptdefinition in entities.DepartmentDefinitions on userdept.DEPTID equals deptdefinition.DEPTID where organizationsiteids.Any(accountid => deptdefinition.SITEID == accountid) select userdept; var contactsinfos = from userdept in usersdepts join contactinfo in entities.AaaUserContactInfoes […]

X已经包含带有EntityFramework的定义Y? (简单数据库)

我的MS SQL数据库中有3个表,我已经在我导入这3个表的项目中添加了EntityFramework(最新)。 第一个问题是没有构建任何实体,因此我将“代码生成策略”从“ None ”更改为“ Default 。 建成后我得到了 X已经包含Y的定义 在实体的所有属性上。 仔细观察它是否在Users.cs生成了部分ex Users.cs和一个部分User in? 为什么要生成User.cs ? 我在另一个项目中有类似的设置,EF设置相同的设置,没有User.cs ? Edit1 :我可以看到一个不同的东西,那就是在失败的项目中使用强空间类型设置为False,但是不能将它设置为true(灰色)?

具有entity framework的primefaces增量

我有一个使用Entity Framework 4.0访问的MySQL服务器。 在数据库中,我有一个名为Works的表,其中有些计数。 我用Asp.net开发网站。 该表可以在同一时间再次使用。 而这种情况会导致错误的输入问题。 我的代码是这样的: dbEntities myEntity = new dbEntities(); var currentWork = myEntity.works.Where(xXx => xXx.RID == 208).FirstOrDefault(); Console.WriteLine(“Access work”); if (currentWork != null) { Console.WriteLine(“Access is not null”); currentWork.WordCount += 5;//Default WordCount is 0 Console.WriteLine(“Count changed”); myEntity.SaveChanges(); Console.WriteLine(“Save changes”); } Console.WriteLine(“Current Count:” + currentWork.WordCount); 如果一个以上的线程同时访问数据库,则只保留最后一个更改。 电流输出: t1:线程一 – t2:线程二 t1:访问工作 t2:访问工作 […]

如何在Moqentity framework中调用SqlQuery

我已经能够使用此链接使用Moq从entity framework中模拟DbSet 。 但是,我现在想知道如何模拟对SqlQuery的调用。 不确定这是否可行或者如何依赖于模拟的db上下文知道正在调用什么“查询”。 以下是我试图嘲笑的内容。 var myObjects = DbContext.Database .SqlQuery(“exec [dbo].[my_sproc] {0}”, “some_value”) .ToList(); 我目前还没有尝试任何东西,因为不知道如何开始嘲笑这个例子。 DbSet是在下面并重新迭代,我可以正确地模拟返回MyObject的DbSet ,但现在我正在尝试模拟一个返回MyObject列表的SqlQuery。 var dbContext = new Mock(); dbContext.Setup(m => m.MyObjects).Returns(mockObjects.Object); dbContext.Setup(m => m.Database.SqlQuery… something along these lines

在插入新记录之前检查记录是否存在

我第一次使用Ado.netentity framework,我需要在将其插入数据库之前检查该记录是否存在。 我最好搜索是否存在AuthodSSID而不是密钥(AuthorID)。 我正在使用VS2010,Framework 4. System.Data.Entity是3.5.0.0。 我用Google搜索,但没有找到这个问题的答案。 PublishingCompanyEntities publishContext; publishContext = new PublishingCompanyEntities(); private void createNew_Click(object sender, EventArgs e) { Author newAuthor = new Author(); newAuthor.FirstName = firstName.Text; newAuthor.LastName = lastName.Text; newAuthor.AuthodSSID = 20; newAuthor.AuthorID = 10 //Check if record exist here publishContext.AddToAuthor(newAuthor);//insert if does not exist }

C# – entity framework – mscorlib.dll中发生未处理的“System.StackOverflowException”类型exception

mscorlib.dll中发生了未处理的“System.StackOverflowException”类型exception 确保没有无限循环或无限递归。 以下代码在此方法成功时调用: internal static List GetProductsSoldByCompany(Guid CompanyID) { var ret = from a in _dbRiv.ProductsSold where a.Company.CompanyId == CompanyID select a; return ret.ToList(); } 在返回时,它调用实体模型并尝试填充所有外键控对象(子对象)。 架构是[1公司有0到多个ProductsSold]。 出于某种原因,对以下代码的调用只会自行级联: [global::System.Data.Objects.DataClasses.EdmRelationshipNavigationPropertyAttribute(“RIV_Model”, “FK_ProductsSold_Company”, “Company”)] [global::System.Xml.Serialization.XmlIgnoreAttribute()] [global::System.Xml.Serialization.SoapIgnoreAttribute()] [global::System.Runtime.Serialization.DataMemberAttribute()] public Company Company { get { return ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference(“RIV_Model.FK_ProductsSold_Company”, “Company”).Value; } set { ((global::System.Data.Objects.DataClasses.IEntityWithRelationships)(this)).RelationshipManager.GetRelatedReference(“RIV_Model.FK_ProductsSold_Company”, “Company”).Value = value; } } /// /// There […]

DbContext不会保持连接打开以便重复使用

我正在尝试重用现有的数据库连接,以便我可以使用TransactionScope执行多个数据库操作,而无需调用MSDTC。 entity framework(使用4.1版本中的新DbContext API)似乎不希望保持显式打开的连接打开。 旧的ObjectContext API保持连接按预期打开并记录 。 由于DbContext API只是在DbContext使用ObjectContext ,我预计会有相同的行为。 有谁知道这个改变是有意还是已知问题? 我无法在任何地方找到它。 public void ConnectionRemainsOpen() { using (var context = new TestDataContext()) { try { Assert.AreEqual(ConnectionState.Closed, context.Database.Connection.State); context.Database.Connection.Open(); var firstRecord = context.Table3.FirstOrDefault(); // this Assert fails as State == ConnectionState.Closed Assert.AreEqual(ConnectionState.Open, context.Database.Connection.State); var newRecord = new Table3 { Name = “test”, CreatedTime = DateTime.UtcNow, ModifiedTime […]