标签: entity-framework-4

MVC 2和EF4自跟踪实体模型在回发时具有不良状态

我的控制器上有标准的Create()Edit()和Delete()方法,我正在使用EF4自跟踪实体.

当回发编辑时,model.ChangeTracker.ChangeTracking = false,以及model.ChangeTracker.State = ObjectState.Added,即使我确保在最初检索记录时设置了这些.

提交表单时,自我跟踪实体是否未持久保存ChangeTracker类?如果是这样,我该如何解决?

public virtual ActionResult Edit(int personId)
{
    IContext context = ContextFactory.GetContext();
    EntityRepo Repo = new EntityRepo(context);
    Person d = Repo.Person.GetById(PersonId);
    d.ChangeTracker.ChangeTrackingEnabled = true;
    return View(d);
}

[HttpPost]
public virtual ActionResult Edit(int personId, Person item)
{
    try
    {
        if (ModelState.IsValid)
        {
            IContext context = ContextFactory.GetContext();
            EntityRepo Repo = new EntityRepo(context);

            // the item is returning these properties that are wrong
            //item.ChangeTracker.ChangeTrackingEnabled = false;
            //item.ChangeTracker.State = ObjectState.Added;

            Repo.Person.Update(item);
            Repo.Person.SaveChanges();

            return RedirectToAction("Index");
        }
    }
    catch
    {
    } …
Run Code Online (Sandbox Code Playgroud)

entity-framework-4 asp.net-mvc-2

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

涵盖CTP4的实体框架书

EF4上有几本书.CTP3和CTP4之间存在很大差异.

CTP4在7月问世,所以:

  • Scott Klein的Pro Entity Framework 4.0(平装 - 2010年3月15日)
  • 实体框架4.0食谱:Larry Tenny和Zeeshan Hirani的问题解决方案(.Net专家的声音)(平装 - 2010年5月19日)

已经过时了?

唯一真正的替代方案是:

  • Julia Lerman编程实体框架(平装 - 2010年8月19日)

但是这个覆盖CTP4吗?

entity-framework entity-framework-4

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

EF 4:使用POCO时无法理解DetectChanges的问题(没有自我跟踪ObjectContext)

我想知道是否有人可以帮助我?

我在理解为什么需要在我的POCO(非代理)实体上发出DetectChanges时遇到问题.

当然我有这一行来确保不返回代理.

   context.ObjectStateManager.GetObjectStateEntry(order).State
Run Code Online (Sandbox Code Playgroud)

如果我需要检查一个对象的"状态"然后我需要发出一个checkchChanges但是为什么我需要检查一个对象的状态?

基本上我将我的POCO实体发送到一个方法,该方法将数据保存到新的ObjectContext(我在每个方法上创建并销毁ObjectContext)

因此,我在理解为什么需要使用ObjectContext跟踪或了解更改时遇到问题?

是因为如果不知道是否会被保存?

也许我很想知道,但似乎如果我使用现有的ObjectContext(我不是每次创建和销毁),确保ObjectContext知道将是有益的,否则不会?

因此,在1方法中,我通过创建新的datacontext来更新对象,将其保存到db并销毁ObjectContext.因此我不使用2种方法,1种方法发送更新或新记录,然后使用另一种方法进行保存.

我真的很感激为什么需要它的快速解释?

提前致谢

entity-framework poco entity-framework-4 objectcontext

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

实体框架,如何在此示例中包含相关实体

我有一个表AccountSecurity,这是一个多对多的表,涉及帐户实体和证券.当我在下面写下查询时,它会返回满足where子句的所有证券.但是,列表中的每个安全实例都不再引用它来自的AccountSecurity.所以当我列出[0] .AccountSecurity时它是空的.反正有没有包含这些信息?我知道我可以重写查询以返回AccountSecurities并使用.Include("Security"),但我想知道它是否可以用另一种方式完成.

var list = (from acctSec in base.context.AccountSecurities
            where acctSec.AccountId == accountId
            select acctSec.Security).ToList();
Run Code Online (Sandbox Code Playgroud)

UPDATE

当然,如果我进行两次查询,图表会正确填充,必须有一种方法可以一次完成.

var securities = (from acctSec in base.context.AccountSecurities
            where acctSec.AccountId == accountId
            select acctSec.Security).ToList();

//this query populates the AccountSecurities references within Security instances returned by query above
var xref = (from acctSec in base.context.AccountSecurities
            where acctSec.AccountId == accountId
            select acctSec).ToList();
Run Code Online (Sandbox Code Playgroud)

entity-framework entity-framework-4

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

查看EF4生成的查询?

LINQ-to-SQL有几种方法,包括可视化器加载项,用于从IQueryable查看生成的SQL.

我找不到Entity Framework 4的等价物.在StackOverflow上没有任何内容,没有博客.怎么做?

我希望能够在代码中完成它,而不必实际执行查询只是为了查看它.

谢谢!

c# sql-server entity-framework-4

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

有没有办法在EF4中定义类似SQL触发器的机制?

我需要创建一个类似于审计日志的审计日志,其中一个表的大多数字段在修改时都会复制到另一个表中.通常,我会创建一个SQL触发器来执行此操作.

是否有实体框架4等效,在修改实体XI时可以修改实体Y?

c# sql-server triggers entity-framework-4

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

实体框架插入多个对象

我想在我的数据库中插入多个对象.

foreach (employee employeedata in employeelist) { objectcontext.employees.AddObject(employeedata); } objectcontext.SaveChanges();

我在循环外调用objectcontext.savechanges以使其有效.问题是我想获得db生成的主键列表.

如果我使用objectcontext.employees.AddObject(employeeA)我插入单个对象,我可以在保存更改后获取id employeeA.id.我现在不知道如何解决这个问题,因为我在对象上下文中添加了一个对象列表,然后调用了将这些对象插入到db中的savechanges.我错过了一些明显的东西吗?谢谢,

c# linq entity-framework ado.net-entity-data-model entity-framework-4

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

Linq to Entities-where语句中的子查询

这必须很简单,但是我已经搜索了2个小时,却找不到答案。我该如何在Linq to Entities中编写此代码:

SELECT Reg4, Reg5, Reg6
FROM dbo.Table1
WHERE Reg1 = 15
AND Reg2 = ( SELECT MAX(Reg2) FROM dbo.Table2 WHERE Reg1 = 15);
Run Code Online (Sandbox Code Playgroud)

在查询表达式和基于方法的语法中都可以做到吗?
ks

linq-to-entities entity-framework entity-framework-4

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

实体框架继承 - 确定对象类型

我有一个与此类似的实体框架模型:

  1. 员工(继承人)
  2. 联系(继承人)

我可以添加,查询(使用OfType)和更新员工和联系人没有问题.但是,我无法确定Person对象的类型.比如说:

var person = entities.People.Single(p => p.Id == 5); 
Run Code Online (Sandbox Code Playgroud)

我怎样才能做到这一点:

if (person.IsEmployee){
//do something
} else if (person.IsContact) {
// do something else
}
Run Code Online (Sandbox Code Playgroud)

或者,我可以满足于此:

if (person.IsOfType<Employee>()){
// do something
} else if (person.IsOfType<Contact>()) {
// do something else
}
Run Code Online (Sandbox Code Playgroud)

有办法吗?

entity-framework-4

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

实体框架:在SaveChanges期间在代码中设置实体ID时,抱怨null id

让我们假设以下代码处理DataContext的SaveChanges事件

void Context_SavingChanges(object sender, EventArgs e)
    {

        IEnumerable<ObjectStateEntry> objectStateEntries =
            from ose in this.ObjectStateManager.GetObjectStateEntries(EntityState.Added | EntityState.Modified | EntityState.Deleted)
            where ose.Entity != null
            select ose;

        foreach (ObjectStateEntry entry in objectStateEntries)
        {
            foreach (var field in entry.CurrentValues.DataRecordInfo.FieldMetadata)
            {
                var guid = Guid.NewGuid();
                AuditEntry audit = AuditEntry.CreateAuditEntry(
                    id: guid,
                    entitySet: entry.EntitySet.Name,
                    typeName: entry.Entity.GetType().Name,
                    entityId: (entry.CurrentValues["Id"] as string) ?? ((entry.State == EntityState.Added) ? "New" : null),
                    oldValue: (entry.State != EntityState.Added) ? entry.OriginalValues[field.FieldType.Name].ToString() : "New",
                    newValue: (entry.State != EntityState.Deleted) ? entry.CurrentValues[field.FieldType.Name].ToString() : "Deleted",
                    modifier: Environment.UserDomainName …
Run Code Online (Sandbox Code Playgroud)

entity-framework-4

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