예제 #1
0
 public DbProviderDataStore(DbProviderFactory providerFactory, string connectionName)
 {
     _providerFactory = providerFactory;
     _connection      = _providerFactory.CreateConnection();
     _memberResolver  = new EntityMemberResolver <T>();
     _connName        = connectionName;
 }
예제 #2
0
 public MongoDbDataStore(MongoDatabase db, string collectionName)
 {
     _db             = db;
     _collection     = db.GetCollection <T>(collectionName);
     _memberResolver = new EntityMemberResolver <T>();
     if (this.AutoConfig && !BsonClassMap.IsClassMapRegistered(typeof(T)))
     {
         BsonClassMap.RegisterClassMap <T>(cm =>
         {
             cm.AutoMap();
             var idKeys = _memberResolver.KeyPropertyMembers.ToArray();
             var idkey  = idKeys.SingleOrDefault();
             if (idkey == null)
             {
                 if (idKeys.Length > 0)
                 {
                     throw new InvalidOperationException(
                         "The MongoDb implementation of IDataStore<T> does not support multiple key members.");
                 }
                 throw new InvalidOperationException(
                     string.Format(
                         "System.ComponentModel.DataAnnotations.KeyAttribute must be associated with at least one member on {0} (even if BsonId is already used).",
                         typeof(T).Name));
             }
             cm.SetIdMember(cm.GetMemberMap(idkey.Name));
             if (_memberResolver.IsAutoIdentity(idkey.Name))
             {
                 if (idkey.PropertyType == typeof(string))
                 {
                     cm.IdMemberMap.SetIdGenerator(global::MongoDB.Bson.Serialization.IdGenerators.StringObjectIdGenerator.Instance);
                     autoGenKey = true;
                 }
                 if (idkey.PropertyType == typeof(Guid))
                 {
                     cm.IdMemberMap.SetIdGenerator(global::MongoDB.Bson.Serialization.IdGenerators.GuidGenerator.Instance);
                     autoGenKey = true;
                 }
                 if (idkey.PropertyType == typeof(ObjectId))
                 {
                     cm.IdMemberMap.SetIdGenerator(global::MongoDB.Bson.Serialization.IdGenerators.ObjectIdGenerator.Instance);
                     autoGenKey = true;
                 }
                 if (!autoGenKey)
                 {
                     throw new NotImplementedException("Auto generated key for type " + idkey.Name + " not yet supported.");
                 }
             }
         });
     }
 }
예제 #3
0
 protected override FooModel GetItemById(long id)
 {
     using (var conn = NewConnection())
     {
         var cmdtext  = "SELECT * FROM FooModel WHERE ID = @ID";
         var cmd      = new SqlCommand(cmdtext, conn);
         var dr       = cmd.ExecuteReader();
         var hydrator = new EntityMemberResolver <FooModel>();
         dr.Read();
         var item = new FooModel();
         hydrator.HydrateFromDictionary(item,
                                        hydrator.ConvertToDictionary(dr));
         return(item);
     }
 }
예제 #4
0
        public DataTableDataStore()
        {
            _memberResolver = new EntityMemberResolver <T>();
            _dataTable      = new DataTable(typeof(T).Name);
            _dataTable.BeginInit();
            Dictionary <string, object> props = _memberResolver.ConvertToDictionary(Activator.CreateInstance <T>());

            foreach (var prop in props)
            {
                var column = new DataColumn(prop.Key, _memberResolver.PropertyType(prop.Key));
                if (_memberResolver.IsAutoIdentity(prop.Key))
                {
                    column.AutoIncrement = true;
                }
                _dataTable.Columns.Add(column);
            }
            _dataTable.EndInit();
            AutoSave = true;
        }
예제 #5
0
 public DictionaryDataStore(IList <T> list)
     : this((IEnumerable <T>)list)
 {
     _memberResolver = new EntityMemberResolver <T>();
 }
예제 #6
0
 public DictionaryDataStore()
 {
     _dictionary      = new SortedDictionary <string, T>();
     _memberResolver  = new EntityMemberResolver <T>();
     KeyJoinDelimeter = "|";
 }
 protected override FooModel GetItemById(long id)
 {
     using (var conn = NewConnection())
     {
         var cmdtext = "SELECT * FROM FooModel WHERE ID = @ID";
         var cmd = new SqlCommand(cmdtext, conn);
         var dr = cmd.ExecuteReader();
         var hydrator = new EntityMemberResolver<FooModel>();
         dr.Read();
         var item = new FooModel();
         hydrator.HydrateFromDictionary(item,
             hydrator.ConvertToDictionary(dr));
         return item;
     }
 }
예제 #8
0
 private RavenClientDataStore()
 {
     _memberResolver = new EntityMemberResolver <T>();
 }
예제 #9
0
 public EFDataSetDataStore(DbSet <T> dbSet)
 {
     _dbSet          = dbSet;
     _memberResolver = new EntityMemberResolver <T>();
 }