2010-10-19 11 views
5

Bir WCF Veri Hizmeti aracılığıyla maruz kaldığım Entity Framework 4'ü kullanarak bir varlık modeli oluşturdum. Varlıklarımdan biri veritabanında kalıcı olmayan özelliklerin olması gerekiyor, ancak Entity Model tasarımcısı bunu yapmanıza izin vermiyor.WCF Veri Hizmeti'ni kullanarak kalıcı olmayan özellikleri nasıl gösteririm?

Bunu elde etmek için, tüm nesnelerimi nesnelerinize kalıcı olmayan özellikler eklemenize izin veren, ancak modelinizi değil, POCO nesneleri olarak tanımladım.

Sahip olduğum sorun şu ki, bu kalıcı olmayan özellikler yalnızca modelin değil nesnelerin kendisinde de var olduğundan, bunlar WCF Veri Hizmeti aracılığıyla açık değildir.

Veritabanında kalıcı olmayan bir varlık modelindeki özellikleri tanımlamanın bir yolu var mı? model için tüm yanıtlar

Ryan

cevap

0

Eh sınıflar için şimdiden

sayesinde kısmi vardır. Kalıcı olmayan özelliklerinizi sınıfların diğer kısımlarına yazabilirsiniz. Eğer WCF Veri Servisleri kullanmıyorum, ancak DB'de sahaya eşlenmemiş iş objelerinde bir mülke ihtiyaç duyduğumda, bu şekilde çalışırsam lütfen bunu yazarım.

+0

Ne yazık ki, bu zaten yapmaya çalıştığım şey. WCF veri hizmetine bir hizmet başvurusu oluşturduğunuzda özellikler Reference.cs'de görünmüyor. –

0

Sanırım ikirachen ek özellikler tanımlamak için kısmi bir sınıf kullanarak doğru yolda. WCF'nin bunları açığa çıkarması için, özellikleri DataMember özniteliğiyle de işaretlemeniz gerekir.

class Program 
{ 
    static void Main(string[] args) 
    { 
     User u = new User 
     { 
      // Here we set our non-persisted property data 
      AssociatedLeadIds = new Guid[] 
      { 
       Guid.NewGuid(), 
       Guid.NewGuid(), 
       Guid.NewGuid() 
      }, 
      // The rest are persisted properties 
      ApplicationId = Guid.NewGuid(), 
      UserName = "TestUser", 
      LoweredUserName = "testuser", 
      LastActivityDate = DateTime.Now, 
      IsAnonymous = false 
     }; 

     using (Service1Client svc = new Service1Client()) 
     { 
      // Here we call the service operation 
      // and print the response to the console 
      Console.WriteLine(svc.DoStuff(u)); 
     } 

     Console.ReadKey(); 
    } 
} 

Umarım bu yardımcı olur: üzerinden WCF maruz AssociatedLeadIds gösteren

[ServiceContract] 
public interface IService1 
{ 
    [OperationContract] 
    string DoStuff(User user); 
} 

public class Service1 : IService1 
{ 
    public string DoStuff(User user) 
    { 
     string result = string.Empty; 
     foreach (Guid leadId in user.AssociatedLeadIds) 
     { 
      // This is going to console on client, 
      // just making sure we can read the data sent to us 
      result += leadId.ToString() + "\n"; 
     } 

     return result; 
    } 
} 

// partial entity model class 
public partial class User 
{ 
    // This is not persisted to our DB with the user model 
    [DataMember] 
    public ICollection<Guid> AssociatedLeadIds { get; set; } 
} 

Ve burada istemci kodu: Ben bu test etmek için küçük WCF hizmeti oluşturuldu!

+0

Kodu biraz daha dışarı çıkarın. WCF ile özellikleri ifşa edemiyorsanız lütfen bize bildirin. – jlaneaz

+0

Girdi jlaneaz'ınız için teşekkürler, maalesef bu hala bir WCF Veri Hizmeti kullanarak çalışmıyor. Sanırım sorunun ne olduğunu biliyorum. Bir Wcf Veri Hizmeti için hizmet referansı, kod tabanı yerine EDMX dosyasından oluşturulmuş gibi görünüyor, bu nedenle yalnızca EDMX dosyasında bulunan özellikler hizmet referansına serileştiriliyor. –

İlgili konular