Добавление элемента в список / коллекцию (сначала с кодом MVC EF 4.1) - PullRequest
0 голосов
/ 30 сентября 2011

Возникли проблемы с добавлением элемента / объекта в список / коллекцию.

Это то, что я сделал до сих пор ...

public abstract class Member 
{
    [DisplayName("ID")]
    public string MemberId { get; set; }

    [DisplayName("Date Applied")]
    public System.DateTime? DateApplied { get; set; }

    [DisplayName("Date Membered")]
    public System.DateTime? DateMembered { get; set; }

    [DisplayName("Member Type")]
    public int MemberTypeFlag { get; set; }

    private ICollection<Address> _Addresses;
    public virtual ICollection<Address> Addresses
    {
        get { return _Addresses ?? (_Addresses = new HashSet<Address>()); }
        set { _Addresses = value; }
    }
}

public class Person : Member
{
    [DisplayName("Last Name")]
    public string LastName { get; set; }

    [DisplayName("First Name")]
    public string FirstName { get; set; }

    [DisplayName("Date Of Birth")]
    public System.DateTime DateOfBirth { get; set; }
}

И вот как я отобразил это..

public class MapAddress  : EntityTypeConfiguration<Address>
{
    public MapAddress()
        : base()
    {
        HasKey(a => a.MemberId).HasOptional(a => a.Member).WithMany(i => i.Addresses);
        Property(p => p.Address1).HasColumnName("ADDRESS1");
        Property(p => p.Address2).HasColumnName("ADDRESS2");
        Property(p => p.City).HasColumnName("CITY");
        Property(p => p.ZipCode).HasColumnName("ZIPCODE");
        Property(p => p.AddressTypeFlag).HasColumnName("ADDRESS_TYPE_FFLG");
        ToTable("MBR_ADDRESS");
    }
}

И возникла ошибка при сохранении ..

"Проверка не удалась для одного или нескольких объектов. Дополнительные сведения см. В свойстве EntityValidationErrors."

ЭтоВот как я могу добавить в коллекцию ..

    public void Apply(PersonInformation member)
    {
        Person person = new Person();

        person = member.person;
        person.MemberId = CustomID.GenerateID();
        person.MemberTypeFlag = (int)Enum.Parse(typeof(EnumMemberType), "Person");
        person.DateApplied = DateTime.Now;

        Address baddress = new Address();
        baddress = member.billingAddress;
        Address paddress = new Address();
        paddress = member.premiseAddress;

        person.Addresses.Add(baddress);
        person.Addresses.Add(paddress);

        context.People.Add(person);
        context.SaveChanges();
    }

Или есть другой элегантный способ сохранить участника с большим количеством адресов.

1 Ответ

0 голосов
/ 10 ноября 2011

Почему вы создаете нового человека и 2 новых адреса, а затем переназначаете переменную на 1 строку позже? В вашем примере много избыточного кода.

Ваш код в основном сводится к следующему:

public void Apply(PersonInformation member)
{
    member.person.MemberId = CustomID.GenerateID();
    member.person.MemberTypeFlag = (int)Enum.Parse(typeof(EnumMemberType), "Person");
    member.person.DateApplied = DateTime.Now;

    member.person.person.Addresses.Add(member.billingAddress);
    person.Addresses.Add(member.premiseAddress);

    context.People.Add(member.person);
    context.SaveChanges();
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...