English 中文(简体)
如何确定第4条第1款中具有参考特性的实体是否是多余的?
原标题:How to determine if an entity with reference properties in EF 4.1 is dirty?

它似乎支持实体。 实体框架4.1的易发性,自动变化跟踪(镜头)的开端。 然而,我迄今还没有发现这一点。

public class DomainContext : DbContext, IDomainContext
{

    /// <summary>
    /// Indicates whether changes have been made to the entity with that have 
    /// not been saved. This method assumes EF Proxies are being used for change tracking.
    /// </summary>
    /// <param name="entityId">The Id of the entity.</param>
    /// <returns>True if the entity is dirty, false otherwise.</returns>
    public bool HasChanges(Guid entityId)
    {
        foreach (DbEntityEntry entry in this.ChangeTracker.Entries())
        {
            IEntity entity = entry.Entity as IEntity;
            if (entity != null)
            {
                if (entity.Id == entityId && entry.State != System.Data.EntityState.Unchanged)
                {
                    return true;
                }
            }
        }
        return false;
    }
}

上述方法似乎对作为参考/复合特性的实体的财产作了改动。 例如:

public class UserPreferences : EntityBase
{

    /// <summary>
    /// Comma delimited list of AFEs for which the user is interested in viewing Events.
    /// </summary>
    public virtual string ViewableAFEs { get; set; }

    /// <summary>
    /// The primary operating area for the user. This is used for defaulting purposes.
    /// </summary>
    public virtual OperatingArea PrimaryOperatingArea
    {
        get { return _primaryOpArea; }
        set
        {
            if (_primaryOpArea != value)
            {
                _primaryOpArea = value;
                RaisePropertyChanged(() => PrimaryOperatingArea);
            }
        }
    }
}

如果我搬上上述类别,或从数据库中获取现有的用户参考实体,然后改变初级产品,域名。 HasChanges将回谎。 我认为,之所以出现这种情况,是因为实体框架跟踪复杂情况,参照性质不同于价值类型特性。

改变可观财产(扼制)确实是一种变化,将HasChanges方法称作上。

我的问题是,我如何暴露在我衍生的域名上的通用方法,以评估所有财产(包括复杂、参考、收集类型)并确定该实体是否为过错?

我很奇怪,你们的其他人是否利用EF4.1为吗? 是否通过利用INotificationPropertyChanged等,使你自己感到过错?

Thanks!

最佳回答

DbContext 预报系统已经暴露了如果某个实体或某些特性发生变化就可加以核查的备选办法。

  • 核查实体是否经过修改:

    var myFooHasChanges = 情况。 国家=实体国家。

  • 检查财产是否修改:

    var barWasModised = 背景.Entry(myFoo).Property(u =>u.Bar。 公布;

You can read all about this in: Using DbContext in EF 4.1 Part 5: Working with Property Values

问题回答

暂无回答




相关问题
Entity Framework with MySQL connector in c#

I have been trying to get the Entity Framework to work in my web application using MySQL. It works fine on my local pc, but doesn t work when I put it on the server. Since the server is a shared ...

How Do I Create And Update A Many To Many Relationship With EF

I am using the Entity Framework with SQL Server. I have a many to many relationship between 2 tables. I have created a join table with just the primary key fields of the 2 tables. In the designer, the ...

Entity Framework with File-Based Database

I am in the process of developing a desktop application that needs a database. The application is currently targeted to SQL Express 2005 and works wonderfully. However, I m not crazy about having ...

Linq to enties, insert foreign keys

I am using the ADO entity framework for the first time and am not sure of the best way of inserting db recored that contain foreign keys. this is the code that i am using, I would appreciate any ...

Entity Framework - Many to many question

I have a table called ASB and a table called PeopleInvolved. There is a junction table called PeopleInvolved_ASB which simply contains an ASBID and a PeopleInvolvedID column. The columns act as a ...

Post back complex object from client side

I m using ASP.NET MVC and Entity Framework. I m going to pass a complex entity to the client side and allow the user to modify it, and post it back to the controller. But I don t know how to do that ...

ADO.NET Entity Data Model are not precise enough

I run this code: var cos = from k in _db.klienci_do_trasy where k.klient_id == 5 select k; but the query send to database is: SELECT * FROM `klienci_do_trasy` LIMIT 0, 30 why is it for, there ...

热门标签