Question

J'utilise la pré-version d'Ado.Net et je ne comprends pas comment l'utiliser avec Ado.Net Data Service.

Code de l'objet 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"));
        }

Et le code du service de données 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;
        }
    }

Le problème est que Ado.Net Data Service attend un constructeur sans paramètre. Et si je fournis un constructeur, que vais-je écrire au constructeur de base?

Et même si je spécifie le constructeur de base, le contexte n'est pas complet sans BuildContext

Qu'est-ce que j'ai manqué ou n'est pas Entity Framework " code only " non pris en charge avec Ado.Net Data Service dans cette pré-version?

Était-ce utile?

La solution

Vous pouvez remplacer la méthode protégée CreateDataSource () sur votre classe dataservice et renvoyer l'instance de ObjectContext. Cela permet au scénario dans lequel le constructeur du fournisseur sous-jacent (dans ce cas, EF) utilise un grand nombre de constructeurs.

J'espère que cela vous aidera.

Merci Pratik

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top