标签: entity-framework-ctp5

实体框架CTP5 - 从存储过程中读取多个记录集

在EF4中,这不容易实现.您必须降级为经典ADO.NET(DataReader),使用ObjectContext.Translate或使用EFExtensions项目.

这是在EF CTP5中实现的吗?

如果没有,推荐的方法是什么?

我们是否必须转换DbContext<T>为a IObjectContextAdapter并访问底层ObjectContext以获得此方法?

有人能指点我用EF CTP5做一篇好文章吗?

stored-procedures multiple-resultsets entity-framework-ctp5

11
推荐指数
1
解决办法
2602
查看次数

是什么原因INSERT语句与FOREIGN KEY约束冲突?

这段代码以前对我有用,但我不确定是什么导致了这个错误.我唯一的猜测是,当我尝试创建一个播放器时,团队数据将被发送回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

11
推荐指数
2
解决办法
2万
查看次数

在实体框架CTP5中关闭对象缓存

我在使用CTP 5中的实体框架代码优先级东西时遇到问题.它正在对对象进行缓存,我不希望它.例如,我加载了一个加载对象的页面(使用ASP.NET MVC站点).然后我去更改数据库.我重新加载页面,并没有反映更改.如果我杀死该网站并重新运行它,那么它显然会重新获取.对于类型,甚至是特定查询,我如何告诉它始终获取新副本.我认为它可能与MergeOption有关,但我很难找到适用于CTP 5的示例.谢谢.

entity-framework-ctp5

10
推荐指数
1
解决办法
3498
查看次数

如何使用我的Entity Framework代码忽略DbUpdateConcurrencyException?

有什么方法可以告诉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试图被删除..因为异常停止一切:(

有任何想法吗?

UPDATE

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)

.net entity-framework entity-framework-ctp5

10
推荐指数
1
解决办法
6235
查看次数

实体框架CTP5 - 如何调用存储过程?

这可能是一个简单的答案,但我看不到如何使用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

9
推荐指数
1
解决办法
8165
查看次数

向表中添加索引

我有一张桌子Person:id, name

我经常有这样的疑问:

select * from Person where name Like "%abc%".
Run Code Online (Sandbox Code Playgroud)

我有两个问题:

  1. 如何使用代码优先5(CTP5)实现此查询
  2. 如何在名称列上添加索引,以便根据查询中的名称更快地检索数据?

entity-framework entity-framework-ctp5

9
推荐指数
1
解决办法
2万
查看次数

如何使用与EF4 Code First相同的表做多对多

我有这个架构:

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

9
推荐指数
1
解决办法
3990
查看次数

如何在EF Code First CTP5中更改DB中外键的命名约定?

我正在使用实体框架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.

entity-framework code-first entity-framework-ctp5

9
推荐指数
1
解决办法
1348
查看次数

EF Code First具有多对多的自引用关系

我开始使用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

9
推荐指数
1
解决办法
7259
查看次数

实体框架4 CTP 5自我引用多对多

我的数据库中有以下场景.这是一项研究记录,这些研究将其他研究作为先决条件.在我的数据库设计中,它看起来像这样:

自我引用多对多

我的代码看起来像这样:

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

8
推荐指数
1
解决办法
1635
查看次数