Ado.Net Entity Framework Code-Only con Ado.Net Data Service
-
05-07-2019 - |
Pregunta
Estoy usando la versión preliminar de Ado.Net y no puedo entender cómo lo uso con el servicio de datos de Ado.Net.
El código para el ObjectContext
public class TradingContext : ObjectContext
{
private static TradingContext _Context;
public static TradingContext Current
{
get
{
if (_Context == null)
{
_Context = BuildContext();
}
return _Context;
}
}
public TradingContext(EntityConnection conn) : base(conn)
{
}
public IObjectSet<Message> Messages
{
get { return CreateObjectSet<Message>(); }
}
private static TradingContext BuildContext()
{
var builder = new ContextBuilder<TradingContext>();
builder.Entity<Message>().Property(x => x.MessageId).IsIdentity();
builder.Entity<Message>().Property(x => x.Xml).HasStoreType("xml");
return builder.Create(new SqlConnection(@"connection string information"));
}
Y el código para el servicio de datos de Ado.Net
[System.ServiceModel.ServiceBehavior(IncludeExceptionDetailInFaults = true)]
public class Trading : DataService<TradingContext>
{
// This method is called only once to initialize service-wide policies.
public static void InitializeService(DataServiceConfiguration config)
{
config.SetEntitySetAccessRule("*", EntitySetRights.AllRead);
config.DataServiceBehavior.MaxProtocolVersion = DataServiceProtocolVersion.V2;
}
}
El problema es que el servicio de datos de Ado.Net espera un constructor sin parámetros. Y si proporciono un constructor, ¿qué escribiré al constructor base?
E incluso si especifico el constructor base, el contexto no está completo sin BuildContext
¿Qué he echado de menos o no es el código de Entity Framework " sólo " ¿No es compatible con Ado.Net Data Service en esta versión preliminar?
Solución
Puede anular el método protegido: CreateDataSource () en su clase de servicio de datos, y puede devolver la instancia de ObjectContext. Esto habilita el escenario donde el constructor del proveedor subyacente (en este caso EF) toma un montón de constructores.
Espero que esto ayude.
Gracias Pratik