Entity Framework ile ilgili bir sorun olduğuna inandığım geçen gün bir sorunla karşılaştım. Geçen gün here ile ilgili bir soru yayınladım. O zamandan beri, bu konunun Entity Framework ile ilgili olmadığını tespit ettim.İfadeleri ve (Web) Konsol Uygulamasını Kullanırken Tuhaf Sorunlar
aşağıdaki sınıfları dikkate alın:
public abstract class ModelBase
{
public Guid Id { get; set; }
}
public class User : ModelBase
{
public string Username { get; set; }
}
public abstract class ModelBaseConfiguration<T> where T : ModelBase
{
public virtual void Configure()
{
ConfigureGuidProperty(e => e.Id);
}
protected void ConfigureGuidProperty(Expression<Func<T, Guid>> expression)
{
Debug.WriteLine(expression);
}
protected void ConfigureStringProperty(Expression<Func<T, string>> expression)
{
Debug.WriteLine(expression);
}
}
public class UserConfiguration : ModelBaseConfiguration<User>
{
public override void Configure()
{
base.Configure();
ConfigureStringProperty(e => e.Username);
}
}
Bir eski konsol uygulaması projesi (VS2015 Windows düğümünün altında bulunan bir) Main
yöntemine aşağıdaki kodu eklerseniz:
UserConfiguration configuration = null;
configuration = new UserConfiguration();
configuration.Configure();
... ve yürütme, hata ayıklama penceresinde aşağıdaki çıktıyı alırım:
e => e.Id
e => e.Username
Beklediğim şey budur. Ben yeni ConsoleApplication projesi (VS2015 Web düğümü altında bulunan biri) yukarıda listelenen tam olarak aynı kodu kullanabilirsiniz ve çalıştırmak eğer
Şimdi, hata ayıklama penceresinde aşağıdaki çıktıyı almak:
e => Convert(e).Id
e => e.Username
Gördüğünüz gibi, ilk çıktı satırı öncekinden farklıdır. Entity Framework ile ilgili sorunlara neden olan şey budur.
Farkın, proje türü olduğunu ve kodun her iki senaryoda da aynı olduğunu keşfettim. Anlamaya çalıştığım şey neden. İkinci senaryonun ifadesinde neden bir dönüşüm denemesi var? Bir süredir kayıp olduğum bir şey var mı? Bu yeni proje türüyle ilgili bir sorun mu var? Kendimi eğitmeye çalışıyorum, böylece gerekirse ayarlayabilirim.