在EF4中,这不容易实现.您必须降级为经典ADO.NET(DataReader),使用ObjectContext.Translate或使用EFExtensions项目.
这是在EF CTP5中实现的吗?
如果没有,推荐的方法是什么?
我们是否必须转换DbContext<T>为a IObjectContextAdapter并访问底层ObjectContext以获得此方法?
有人能指点我用EF CTP5做一篇好文章吗?
这段代码以前对我有用,但我不确定是什么导致了这个错误.我唯一的猜测是,当我尝试创建一个播放器时,团队数据将被发送回Team表并尝试复制,但由于TeamId是唯一的,因此出现此错误.
错误
INSERT语句与FOREIGN KEY约束"FK_dbo.Players_dbo.Teams_TeamId"冲突.冲突发生在数据库"Web",表"dbo.Teams",列'TeamId'中.该语句已终止.
播放机
public class Player
{
...
...
[HiddenInput(DisplayValue = false)]
[ForeignKey("Team")]
public int TeamId { get; set; }
public virtual Team Team { get; set; }
...
}
Run Code Online (Sandbox Code Playgroud)
球队
public class Team
{
[Key]
[HiddenInput(DisplayValue = false)]
public int TeamId { get; set; }
....
public virtual ICollection<Player> Players { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
调节器
//
// GET: /Player/
[HttpGet]
public ActionResult Create()
{
PopulateTeamsDropDownList();
return View();
}
//
// POST: /Player/
[HttpPost]
public ActionResult Create(Player …Run Code Online (Sandbox Code Playgroud) c# ef-code-first entity-framework-ctp5 asp.net-mvc-4 visual-studio-2012
我在使用CTP 5中的实体框架代码优先级东西时遇到问题.它正在对对象进行缓存,我不希望它.例如,我加载了一个加载对象的页面(使用ASP.NET MVC站点).然后我去更改数据库.我重新加载页面,并没有反映更改.如果我杀死该网站并重新运行它,那么它显然会重新获取.对于类型,甚至是特定查询,我如何告诉它始终获取新副本.我认为它可能与MergeOption有关,但我很难找到适用于CTP 5的示例.谢谢.
有什么方法可以告诉EF不要担心a DELETE或者UPDATE做或不做的行数?
我正在尝试从数据库中删除一行,但由于该行不存在,EF会抛出异常:DbUpdateConcurrencyException..说0行受到影响.这是对的 - >没有删除任何行.但那完全没问题......因为没有数据.
我真的不想对数据库进行往返查看该行是否存在..如果是这样的话...然后尝试删除它.
如果我尝试吞下一个try / catch块中的异常,那么当我尝试SaveChanges()...这是坏事时,要删除的其余项目不会被发送到数据库.
例如.
Delete(new Foo(1));
Delete(new Foo(2));
Delete(new Foo(3));
SaveChanges(); // <-- Throws the exception.
// DB Trace : DELETE FROM Foo WHERE Id = 1;
Run Code Online (Sandbox Code Playgroud)
并且那就是..没有迹象显示记录2或3试图被删除..因为异常停止一切:(
有任何想法吗?
Delete工作怎么样?这是代码......(简化和强类型)
public void Delete(Foo foo)
{
if (foo == null)
{
throw new ArgumentNullException("foo");
}
Foo attachedEntity = Context.Set<Foo>().Local.FirstOrDefault(x => x.Id > 0);
if (attachedEntity != null)
{
// Entity already in …Run Code Online (Sandbox Code Playgroud) 这可能是一个简单的答案,但我看不到如何使用EF CTP5执行存储过程.
在Entity Framework 4.0中,我们这样做了:
ExecuteFunction("ContainerName.StoredProcName", new ObjectParameter("Id", id)).
这是一种方法ObjectContext.
但是DbContext没有这样的方法.
我们如何调用存储过程?EF CTP5不支持吗?
编辑:
我找到了这个帖子,说明你需要这样做:
var people = context.People.SqlQuery("EXECUTE [dbo].[GetAllPeople]");
Run Code Online (Sandbox Code Playgroud)
这引起了一些担忧:
1)您现在在集合上调用存储的程序,而不是上下文.存储过程应该在上下文中可用,而不是与特定实体集相关联.就像它们在SQL Server中的"数据库"下,而不是在"表"下.
2)复杂类型怎么样?我之前有一个从存储过程返回的复杂类型.但现在看起来好像你必须直接映射到一个实体?这没有任何意义.我有很多存储过程返回一个不是由ObjectSet/DBSet直接表示的类型,我无法看到我如何能够完成.
希望有人可以为我清除这一点,因为据我所知,到目前为止,我将无法升级到CTP5.
sql-server stored-procedures entity-framework code-first entity-framework-ctp5
我有一张桌子Person:id, name
我经常有这样的疑问:
select * from Person where name Like "%abc%".
Run Code Online (Sandbox Code Playgroud)
我有两个问题:
我有这个架构:
create table Person
(
id int identity primary key,
name nvarchar(30)
)
create table PersonPersons
(
PersonId references Person(id),
ChildPersonId references Person(id)
)
Run Code Online (Sandbox Code Playgroud)
如何创建使用EF4 Code First CTP5映射它们的类?
entity-framework code-first entity-framework-4 ef-code-first entity-framework-ctp5
我正在使用实体框架Code First CTP5,我试图找到一种方法来添加一个约定来改变外键名称的生成方式.这是一个例子:
public class Lead
{
public int Id {get; set;}
// A lot of other fields
public virtual User AssignedTo { get; set; }
}
public class User
{
public int Id {get; set;}
}
Run Code Online (Sandbox Code Playgroud)
潜在客户可以与用户相关联.在Leads表的DB for AssignedTo中生成的字段称为UserId.
我的模型完全独立于实体框架.所以我不想使用EF的属性.我想在可能的情况下使用约定将字段命名为AssignedToUserId.
我开始使用EF Code First和MVC,我有点难过.我有以下数据库结构(很抱歉,我不允许发布图片):
表 - 产品
表 - 相关产品
Products.ProductID上的1-Many - > RelatedProducts.ProductID
1 - Products.ProductID上的很多 - > RelatedProducts.RelatedProductID
基本上我有一个产品,可以有一系列与之相关的产品.它们保存在RelatedProducts表中,其中包含ProductID和相关产品的ProductID定义的关系,我将其命名为RelatedProductID.在我的代码中,我生成了以下类:
public class MyDBEntities : DbContext
{
public DbSet<Product> Products { get; set; }
public DbSet<RelatedProduct> RelatedProducts { get; set; }
}
public class Product
{
public Guid ProductID { get; set; }
public string Name { get; set; }
public string Heading { get; set; }
public string Description { get; set; }
public decimal Price { get; set; } …Run Code Online (Sandbox Code Playgroud) many-to-many entity-framework-4 self-reference entity-framework-ctp5
我的数据库中有以下场景.这是一项研究记录,这些研究将其他研究作为先决条件.在我的数据库设计中,它看起来像这样:

我的代码看起来像这样:
public class Study
{
public int ID { get; set; }
public string Topic { get; set; }
public byte TypeID { get; set; }
public virtual StudyType Type { get; set; }
public bool Deprecated { get; set; }
public virtual ICollection<Study> Prerequisites { get; set; }
}
public class StudyType
{
public byte ID { get; set; }
public string Name { get; set; }
public virtual ICollection<Study> Studies { get; set; }
}
public class …Run Code Online (Sandbox Code Playgroud) many-to-many entity-framework-4 self-reference entity-framework-ctp5