C # ADO.NET Entity - PullRequest
       2

C # ADO.NET Entity

0 голосов
/ 14 сентября 2010

Вот вопрос: у меня есть следующие объекты: alt text

Каждый раз, когда я обновляю или вставляю транзакцию, я хочу автоматически определять категорию в зависимости от ReferenceMappingExpression или DescriptionMapppingExpression в CategoryMappings сущности.

Я имею в виду, я хочу сопоставить Transaction.Description с CategoryMappings.DescriptionMapping и, если оно совпадает, получить FkCategoryID из CategoryMapping и сохранить транзакции.

Возможно выполнить цикл по каждой транзакции в списке и categorymapping списке, но я не думаю, что это хорошая идея. Как бы вы это сделали? Какие-либо предложения? Есть опыт?

1 Ответ

1 голос
/ 14 сентября 2010

Вы можете использовать ObjectStateManager, добавить частичный метод OnContextCreated в контекст вашей сущности.Добавьте новый обработчик к событию SavingChanges из контекста.Получите все добавленные и измененные транзакции и делайте все, что хотите внутри.Как это:

public partial class ModelContainer
{
    partial void OnContextCreated()
    {
        this.SavingChanges += new EventHandler(ModelContainer_SavingChanges);
    }

    void ModelContainer_SavingChanges(object sender, EventArgs e)
    {
        foreach (var item in this.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Added))
        {
            SetTransactionDescription(item);
        }
        foreach (var item in this.ObjectStateManager.GetObjectStateEntries(System.Data.EntityState.Modified))
        {
            SetTransactionDescription(item);
        }
    }

    void SetTransactionDescription(System.Data.Objects.ObjectStateEntry entry)
    {
        Transaction transaction = entry.Entity as Transaction;
        if (transaction != null)
        {
            // Your code
        }
    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...