WCF Data Servicesは、Entity Frameworkコードファースト(4.1)での作業をサポートしていますか? DbSet
またはDbContext
とどうすればよいか理解できないようです。私は、EFCFがData Servicesの後にリリースされたので、あまり驚くべきことではないと思います。WCF Data ServicesとEntity Frameworkのコードが最初にありますか?
internal class Context:DbContext {
public Context(String nameOrConnectionString) : base(nameOrConnectionString) { }
public DbSet<AlertQueue> Alerts { get; set; }
}
public class EntitySet:Abstract.EntitySet {
public EntitySet(String nameOrConnectionString) {
var context = new Context(nameOrConnectionString);
this.AlertQueueRepository = new Concrete.AlertQueueRepository(new Repository<AlertQueue>(context, context.Alerts));
}
}
public class AlertQueueRepository:EntityRepository<AlertQueue> {
public AlertQueueRepository(IEntityRepository<AlertQueue> entityRepository):base(entityRepository) { }
public IQueryable<AlertQueue> Pending {
get {
return (from alert in this.All
where alert.ReviewMoment == null
select alert);
}
}
}
EntityRepository
とIEntityRepository
はAll
のための一般的な方法や他のCRUD機能を提供します。
WCFサービス:
public class WcfDataService : DataService<Context>
{
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.All);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
コンテキスト:
public class Context : DbContext
{
public DbSet<User> Users { get; set; }
public Context()
{
this.Configuration.ProxyCreationEnabled = false;
}
}
[DataServiceKey("Id")]
public class User
{
public int Id { get; set; }
public string FirstName { get; set; }
public string LastName { get; set; }
}
私はこの非常に簡単なテストをした
public class WcfDataService1:DataService<Domain.Concrete.AlertQueueRepository> {
public static void InitializeService(DataServiceConfiguration config) {
config.SetEntitySetAccessRule("All", EntitySetRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
EFv4.1またはカスタムリポジトリでWCFデータサービスを使用しますか?それはかなり大きな違いです。 –
私は 'EntitySet'を持っている唯一の理由は、MVCのコントローラに単一のオブジェクトを提供でき、必要なエンティティセットを照会することができるということでした。 – Yuck
しかし 'DbContext'を直接渡さないのはなぜですか? –