SORU
11 Kasım 2009, ÇARŞAMBA


Eğer bir nesne zaten Varlık Çerçevesi içinde veri bir içeriğe bağlı olup olmadığını kontrol etmek mümkün mü?

Zaten context.AttachTo(...)) belirli bir içeriğe bağlı olan bir nesne eklemek çalışırken aşağıdaki hatayı alıyorum:

Aynı anahtara sahip bir nesne zaten ObjectStateManager var. ObjectStateManager edemiyor aynı anahtara sahip birden çok nesne izleme.

Orada çizgisinde bir şey ulaşmanın bir yolu

context.IsAttachedTo(...)

Şerefe!

Düzenleme:

Jason özetlenen uzatma yöntemi bulunur, ama benim durumum için çalışmıyor.

Bazı işler başka bir soruya cevap yöntemi özetlenen kullanarak yapmaya çalışıyorum:

http://stackoverflow.com/questions/1601350/how-do-i-delete-one-or-more-rows-from-my-table-using-linq-to-entities-without-r

Benim kod bu gibi görünüyor:

var user = new User() { Id = 1 };
context.AttachTo("Users", user);
comment.User = user;
context.SaveChanges();

Bu iyi, ben de aynı yöntemi kullanıyorum nerede bu kullanıcı için bir şey yap ve bir kukla eklemek için çalış User nesne dışında çalışır. Bu, daha önce bu kukla kullanıcı nesnesi ekledim çünkü başarısız olur. Bunu nasıl kontrol edebilirim?

CEVAP
11 Kasım 2009, ÇARŞAMBA


Çok işimize gelir: ile sona erdi

public static void AttachToOrGet<T>(this ObjectContext context, string entitySetName, ref T entity)
	where T : IEntityWithKey
{
	ObjectStateEntry entry;
	// Track whether we need to perform an attach
	bool attach = false;
	if (
		context.ObjectStateManager.TryGetObjectStateEntry
			(
				context.CreateEntityKey(entitySetName, entity),
				out entry
			)
		)
	{
		// Re-attach if necessary
		attach = entry.State == EntityState.Detached;
		// Get the discovered entity to the ref
		entity = (T)entry.Entity;
	}
	else
	{
		// Attach for the first time
		attach = true;
	}
	if (attach)
		context.AttachTo(entitySetName, entity);
}

Aşağıdaki gibi çağırabilirsiniz

User user = new User() { Id = 1 };
II.AttachToOrGet<Users>("Users", ref user);

Bu her zaman belirttiğim KİMLİK numarasını kullanabilirsiniz dışında context.AttachTo(...) gibi çünkü çok güzel çalışıyor. Ya da daha önce veya kendi nesne bağlı bağlı nesne ile sonuçlanıyor. İçerik CreateEntityKey arama güzel ve jenerik emin olur ve hatta başka bir kodlama ile bileşik anahtarları (çünkü EF zaten bizim için bunu yapabilir!) ile çalışır.

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

YORUMLAR

SPONSOR VİDEO

Rastgele Yazarlar

  • LevelUpTuts

    LevelUpTuts

    20 Ocak 2012
  • Snazzy Labs

    Snazzy Labs

    9 Aralık 2008
  • Vicious Computers

    Vicious Comp

    14 EKİM 2006