C# “客户代码。”约翰,这正是我从你的问题中理解的。我的答案不满足这个要求吗?您的解决方案创建了方法。为了尽量减少对客户端代码的更改,我转而寻找属性包装器。您提供了一个解决方案,但不允许我使用现有的客户端代码。好的,我明白了。不幸的是,没有成千上万的选择。你可

C# “客户代码。”约翰,这正是我从你的问题中理解的。我的答案不满足这个要求吗?您的解决方案创建了方法。为了尽量减少对客户端代码的更改,我转而寻找属性包装器。您提供了一个解决方案,但不允许我使用现有的客户端代码。好的,我明白了。不幸的是,没有成千上万的选择。你可,c#,entity-framework-4,extension-methods,C#,Entity Framework 4,Extension Methods,“客户代码。”约翰,这正是我从你的问题中理解的。我的答案不满足这个要求吗?您的解决方案创建了方法。为了尽量减少对客户端代码的更改,我转而寻找属性包装器。您提供了一个解决方案,但不允许我使用现有的客户端代码。好的,我明白了。不幸的是,没有成千上万的选择。你可以在1000门课上做1000次改变,也可以在精心挑选的地方做1次改变。知道。。。1/如果您通过代码生成添加属性,但您不想这样做,则可以保持调用不变。2/扩展只能是方法:它强制更改所有调用,而您不想更改。3/可以将属性添加到公共祖先类:您尝试将分


“客户代码。”约翰,这正是我从你的问题中理解的。我的答案不满足这个要求吗?您的解决方案创建了方法。为了尽量减少对客户端代码的更改,我转而寻找属性包装器。您提供了一个解决方案,但不允许我使用现有的客户端代码。好的,我明白了。不幸的是,没有成千上万的选择。你可以在1000门课上做1000次改变,也可以在精心挑选的地方做1次改变。知道。。。1/如果您通过代码生成添加属性,但您不想这样做,则可以保持调用不变。2/扩展只能是方法:它强制更改所有调用,而您不想更改。3/可以将属性添加到公共祖先类:您尝试将分部类添加到EntityObject,但似乎没有成功。犯错误看来可能要考虑妥协了……西斯拉,我感谢你的努力。当然还有其他的方法可以做到这一点,而且随着EF或其模板的修订,或者如果我们采用DevForce,或者模型得到更新,或者应用程序的发展,所有这些方法都会带来麻烦。事实证明,并不是所有的实体都需要这些属性,所以我们只是创建了我们需要的属性。此外,上面的示例在运行时也不起作用。例如,集合的多重化会导致Context.AddObject(obj.GetType().Name,obj)失败,因此它不能是通用的。
    public bool Deleted
    {
        get { return this.EntityState == System.Data.EntityState.Deleted; }
        set 
        {
            if (value)
                Context.DeleteObject(this);
        }
    }

    public bool Inserted
    {
        get { return this.EntityState == System.Data.EntityState.Added; }
        set
        {
            if (value)
                Context.AddObject(this.GetType().Name, this);
        }
    }
public static class EntityObjectExtensions
{
    public static bool IsDeleted(this EntityObject obj)
    {
        return obj.EntityState == System.Data.EntityState.Deleted;
    }

    public static bool Delete(this EntityObject obj)
    {
        Context.DeleteObject(obj);
    }

    public static bool IsInserted(this EntityObject obj)
    {
        return obj.EntityState == System.Data.EntityState.Added;
    }

    public static bool Insert(this EntityObject obj)
    {
        Context.AddObject(obj.GetType().Name, obj);
    }
}