SORU
17 NİSAN 2012, Salı


varlık nesne İEntityChangeTracker birden çok örneği tarafından başvurulan olamaz. Varlık Çerçevesi 4.1 varlık ile ilgili nesneleri eklerken

Şehir referanslara sahip olan Çalışan ayrıntıları, kurtarmaya çalışıyorum. Ama her istisna olsun doğrulanmış olan bağlantım, kurtarmaya çalışıyorum"ADO.Net Varlık varlık, Bir nesne olamaz İEntityChangeTracker birden çok örneği tarafından başvurulan Çerçeve"

Hala ne yapacağını tam olarak fikir almıyorum ama o kadar çok yazı okumuştum... Kaydet düğmesini tıklayın benim kod aşağıda verilmiştir

protected void Button1_Click(object sender, EventArgs e)
    {
        EmployeeService es = new EmployeeService();
        CityService cs = new CityService();

        DateTime dt = new DateTime(2008, 12, 12);
        Payroll.Entities.Employee e1 = new Payroll.Entities.Employee();

        Payroll.Entities.City city1 = cs.SelectCity(Convert.ToInt64(cmbCity.SelectedItem.Value));

        e1.Name = "Archana";
        e1.Title = "aaaa";
        e1.BirthDate = dt;
        e1.Gender = "F";
        e1.HireDate = dt;
        e1.MaritalStatus = "M";
        e1.City = city1;        

        es.AddEmpoyee(e1,city1);
    }

veEmployeeservice Kodu

public string AddEmpoyee(Payroll.Entities.Employee e1, Payroll.Entities.City c1)
        {
            Payroll_DAO1 payrollDAO = new Payroll_DAO1();
            payrollDAO.AddToEmployee(e1);  //Here I am getting Error..
            payrollDAO.SaveChanges();
            return "SUCCESS";
        }

CEVAP
17 NİSAN 2012, Salı


Çünkü bu iki satır ...

EmployeeService es = new EmployeeService();
CityService cs = new CityService();

... yapıcı bir parametre yok, sınıflar içinde bir bağlam oluşturmak sanırım. Sen 8 *...* yük

Payroll.Entities.City city1 = cs.SelectCity(...);

...CityService bağlama city1 iliştirin. Daha sonraEmployee e1 yeni bir referans olarak city1 Ekle e1 ekleyincity1 bu başvuru da dahil olmak üzereEmployeeService bağlama. Sonuç olarak city1 özel durum hakkında şikayetçi olan iki farklı bağlam bağlı.

Hizmet sınıfları ve her iki hizmette enjekte kullanma dışında bir bağlam oluşturarak çözebilirsiniz

EmployeeService es = new EmployeeService(context);
CityService cs = new CityService(context); // same context instance

Servis sınıflar sadece tek bir varlık türü için sorumlu depoları benziyorsun. Böyle bir durumda her zaman hizmet için ayrı bağlamlarda kullandığınızda sorun varlıklar arasındaki ilişkiler söz konusu en kısa sürede sahip olacaksınız.

Sen-ebilmek da yaratmak bir tek hizmet olan sorumlu bir dizi yakından ilişkili kuruluşlarla gibi bir EmployeeCityService (tek içerik) ve temsilci tüm işlemle Button1_Click yöntemi için bir yöntem bu hizmeti.

Bunu Paylaş:
  • Google+
  • E-Posta
Etiketler:

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • apenney888

    apenney888

    27 EKİM 2010
  • Bennythecoder

    Bennythecode

    25 Mart 2008
  • Kingsimba357

    Kingsimba357

    7 NİSAN 2008