Каков наилучший способ проверки классов EntityFramwork 4.0? - PullRequest
0 голосов
/ 16 апреля 2010

Я провел довольно много поисков, но мне еще не удалось найти простой способ проверки сущностей EntityFramework 4.0, переданных по сети через службы данных WCF. По сути, я хочу сделать что-нибудь на клиенте, например:

        Proxy.MyEntities entities = new Proxy.MyEntities(
            new Uri("http://localhost:2679/Service.svc"));

        Proxy.Vendor vendor = new Proxy.Vendor();

        vendor.Code = "ABC/XYZ";
        vendor.Status = "ACTIVE";

        // I'd like to do something like the following:
        vendor.Validate();

        entities.AddToVendors(vendor);

        entities.SaveChanges();

Любая помощь в этом отношении будет принята с благодарностью!

1 Ответ

0 голосов
/ 16 апреля 2010

На вашем месте я бы использовал платформу System.ComponentModel.DataAnnotations.

В Интернете есть много примеров.

Вы можете использовать атрибуты ValidationAttributes, как требуется, диапазон и т. Д., И создать собственный атрибут для выполнения пользовательской проверки.

См. Ниже, как проверить сущность.

Type objectType = entity.GetType();

Dictionary<string, string> errors = new Dictionary<string, string>();

foreach (PropertyInfo propertyInfo in objectType.GetProperties().Where(w => w.CanRead))
{
    object value = propertyInfo.GetValue(entity, null);

    foreach (ValidationAttribute validator in propertyInfo.GetCustomAttributes(typeof(ValidationAttribute), false))
    {
        if (!validator.IsValid(value))
        {
            errors.Add(propertyInfo.Name, validator.ErrorMessage);
        }
    }
}

Надеюсь, это поможет, если вам нужно что-то еще, просто спросите

Regard

Daniel

...