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?

¿Fue útil?

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

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top