我在我的项目中为Framework 4.0安装了Entity Framework 5.0 RC.但是当我尝试从Views中获取数据时,我得到了错误.EF尝试为此实体创建表.
目前我们正在开发EF 4.3.我们想将其升级到EF5.我有谷歌升级过程的步骤,但我没有得到任何结果.请帮我..!
谢谢.. :)
entity entity-framework entity-framework-4 entity-framework-5
使用Entity Framework(在我的例子中是代码),我有一个操作,需要我调用SaveChanges来更新DB中的一个对象,然后再次SaveChanges来更新另一个对象.(我需要第一个SaveChanges来解决EF无法确定首先更新哪个对象的问题).
我试过做:
using (var transaction = new TransactionScope())
{
// Do something
db.SaveChanges();
// Do something else
db.SaveChanges();
tramsaction.Complete();
}
Run Code Online (Sandbox Code Playgroud)
当我运行它时,我在第二次SaveChanges调用时遇到异常,说"底层提供程序在打开时失败".内部异常表示我的机器上未启用MSDTC.
现在,我在其他地方看到了描述如何启用MSDTC的帖子,但似乎我还需要启用网络访问等.这听起来像是完全矫枉过正,因为没有涉及其他数据库,更不用说其他服务器了.我不想做一些会使我的整个应用程序不那么安全(或更慢)的东西.
当然必须有一个更轻量级的方法(理想情况下没有MSDTC)?!
msdtc entity-framework transactionscope sql-server-2012 entity-framework-5
我正在使用VS 2012和EF 5.我有一个现有的数据库,我想从现有数据库创建POCO类.我按照步骤将ADO.NET实体数据模型添加到我的项目中.我通过向导使用现有数据库.然后在设计器打开的情况下创建edmx和tt文件.但是,我想创建POCO对象并使用它们.Microsoft网站声明POCO实体框架生成器已过时,我应该使用DBContext Generator.我无法弄清楚我用来生成POCO类的步骤.我只看到edmx设计师.我甚至不想要一个edmx文件,而只需要POCO类.如何使用EF 5和VS 2012从现有数据库中创建POCO类?
我在WinForms项目中使用EntityFramework 5.0版,.net 4.5.
我为我创建了2个重要的实体
public class Role
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public string Name { get; set; }
public bool StockPermission { get; set; }
public bool ItemPermission { get; set; }
public bool OrderPermission { get; set; }
public bool PersonPermission { get; set; }
public bool StatisticPermission { get; set; }
}
public class Person
{
[Key]
[DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
public String Name { get; set; } …Run Code Online (Sandbox Code Playgroud) 我在EF 5.0中迈出了第一步,我有很多关系.电影可以有多种类型和类型可以有多个电影
public class Movie
{
public int MovieId { get; set; }
[Required]
public string Name { get; set; }
public virtual ICollection<Type> Types { get; set; }
}
public class Type
{
public int TypeId { get; set; }
public string MovieType { get; set; }
public virtual ICollection<Movie> Movies { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
当我生成数据库时,它会在Movie和type之间创建多对多
那么,我应该怎样做才能将这个多表种子播种?我在这里尝试了很多解决方案,但它没有用.
此外,这是使用EF代码首先生成多对多关系的最佳方法
我想找到一种方法使用Linq将导航属性过滤到相关实体的子集.我知道围绕这个主题的所有答案建议做一个匿名选择器,如:
query.Where(x => x.Users.Any(y => y.ID == actingUser.ID))
.Select(x => new
{
Event = x,
Discussions = x.Discussions.Where(actingUser.GenerateSecurityFilterFor<Domain.Discussion>())
})
.OrderBy(x => x.Discussions.Count())
.ThenBy(x => x.Event.Name);
Run Code Online (Sandbox Code Playgroud)
但是,由于我们的查询生成的一般性质,这显然不太理想,如果你抛出探查器,也会产生非常可怕的SQL查询.
我希望能够完成以下事情:
query.Include(x => x.Discussions.Where(actingUser.GenerateSecurityFilterFor<Domain.Discussion>()))
.OrderBy(x => x.Discussions.Count())
.ThenBy(x => x.Name);
Run Code Online (Sandbox Code Playgroud)
我知道这是不是在EF5(或与此有关的任何版本)的支持,但必须有完成约束的结果通过LINQ的不钻研匿名类型select语句设置的方式.
我试图做一些事情:
query.GroupJoin(discquqery,
x => x.ID,
x => x.Event.ID,
(evt, disc) => evt.Discussions = disc.Where(actingUser.GenerateSecurityFilterFor<Domain.Discussion>())).ToList();
Run Code Online (Sandbox Code Playgroud)
但是,您无法在lambda表达式中进行赋值,并且在此处选择匿名类型会导致使用select时遇到的相同困境.
我想我无法理解为什么EF没有提供一种方法(我能找到)来生成:
SELECT
--Properties
FROM Event e
LEFT OUTER JOIN Discussions d
ON e.ID = d.EventID AND --Additional constraints
WHERE
--Where conditions
ORDER BY
--Order Conditions
Run Code Online (Sandbox Code Playgroud)
在SQL中约束连接是如此简单,HAS也是通过Linq实现它的一种方式.
PS:我已经搜索了堆栈,MSDN,专家交流等.请认识到这不是重复.甚至触及这个问题的任何一个都有一个警告"它无法完成"的答案或根本没有答案.没有什么是不可能的......包括这个.
我正在尝试使用EntityFramework 5删除对象,但我收到此错误.
无法删除该对象,因为在ObjectStateManager中找不到该对象
我正在使用EF5中不存在的Remove()方法DeleteObject().任何人都可以帮助我错过的东西吗?
这对删除不起作用
localDb.Customers.Remove(new Customer() { CustomerId = id });
localDb.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
我尝试从msdn将状态更改为Deleted的另一件事.但在这里它给出了一个错误,说所有的字段都应该存在.是否有必要获取完整的记录然后删除?
var customer = new Customer(){ CustomerId = id };
localDb.Customers.Attach(customer);
localDb.Entry(customer).State = EntityState.Deleted;
localDb.SaveChanges();
Run Code Online (Sandbox Code Playgroud)
有什么投入?
我们有一个Entity Framework 5.0项目,它使用SQL Server 2008进行代码优先迁移,但所有日期属性都是作为datetime列在数据库中创建的- 而不是datetime2.
是否可以使用将更新datetime数据库中所有列的添加迁移来创建迁移?有没有其他简单的方法切换到datetime2任何地方?
改变源控制分支,运行更新的数据库的回滚到先前的迁移之后,EF有时会显示文本"还原自动迁移",象下面这样:
Reverting automatic migration: 201305171619008_DescriptiveNameForMigration.
Reverting code-based migration: 201305162023299_Init.
Run Code Online (Sandbox Code Playgroud)
实体框架如何确定迁移应该是自动的,它的作用有何不同?
以下是如何重现它,假设您已经设置了一个已经设置了代码优先迁移的项目:
这就是我认为正在发生的事情,如果我错了,请纠正我.