0

首先,我只是想更新一个修改过的模型。可以说,我们将“文章”作为模型进行讨论。以下方法在名为“Articles”的类中实现:

    public static void SaveArticle(Article article) 
    {
        if (article.Id == 0)
        {
            webEntities.Articles.Add(article);
        }
        else
        {
            webEntities.Articles.Attach(article);
            webEntities.Entry(article).State = EntityState.Modified;
        }

        webEntities.SaveChanges();
    }

因此,每当我想在控制器操作中保存修改后的文章时,我只需要调用“Articles.SaveArticle(myArticle);”,它会按预期工作。
到目前为止一切顺利,但这意味着我需要为每个模型/实体冗余地实现它。

然后我想到了类似模板模式的东西。即一个名为“Entity”的类,其中“Article”继承自“Entity”。
此外,一个名为“实体”的类包含一个像这样的静态方法:

    public static void SaveEntity(Entity entity) 
    {
        if (Entity.Id == 0) // <-- Problem 1
        {
            webEntities.Entities.Add(entity); // <-- Problem 2
        }
        else
        {
            webEntities.Entities.Attach(entity); // <-- Problem 3
            webEntities.Entry(entity).State = EntityState.Modified; // <-- Problem 4
        }

        webEntities.SaveChanges();
    }

所以我不需要冗余地实现它,但我不知道如何解决上面代码中提到的问题。我是否认为太复杂或者什么是我的问题的最佳实践?

提前致谢!

亲切的问候

4

1 回答 1

1

使用泛型。

public static void Save<T>(T entity)
    where T : class
{
    webEntities.Set<T>().AddOrUpdate(entity);
    webEntities.SaveChanges();
}

AddOrUpdate是 System.Data.Entity.Migrations 中的扩展方法。

于 2013-02-01T13:50:20.113 回答