Exemple #1
0
        public void Prepare_returns_a_new_instance()
        {
            var objectQueryExecutionPlanFactory = new ObjectQueryExecutionPlanFactory(
                Common.Internal.Materialization.MockHelper.CreateTranslator <object>());

            var edmItemCollection       = new EdmItemCollection();
            var fakeSqlProviderManifest = FakeSqlProviderServices.Instance.GetProviderManifest("2008");
            var storeItemCollection     = new StoreItemCollection(FakeSqlProviderFactory.Instance, fakeSqlProviderManifest, "System.Data.SqlClient", "2008");
            var mappingItemCollection   = new StorageMappingItemCollection(edmItemCollection, storeItemCollection, Enumerable.Empty <XmlReader>());

            var metadataWorkspace = new MetadataWorkspace(
                () => edmItemCollection,
                () => storeItemCollection,
                () => mappingItemCollection);

            var fakeSqlConnection = new FakeSqlConnection();

            fakeSqlConnection.ConnectionString = "foo";
            var entityConnection = new EntityConnection(metadataWorkspace, fakeSqlConnection, false);

            var objectContext      = new ObjectContext(entityConnection);
            var dbExpression       = new DbNullExpression(TypeUsage.Create(fakeSqlProviderManifest.GetStoreTypes().First()));
            var dbQueryCommandTree = new DbQueryCommandTree(
                metadataWorkspace, DataSpace.CSpace,
                dbExpression, validate: false, useDatabaseNullSemantics: true);
            var parameters = new List <Tuple <ObjectParameter, QueryParameterExpression> >();

            var objectQueryExecutionPlan = objectQueryExecutionPlanFactory.Prepare(
                objectContext, dbQueryCommandTree, typeof(object),
                MergeOption.NoTracking, false, new Span(), parameters, aliasGenerator: null);

            Assert.NotNull(objectQueryExecutionPlan);
        }
 public void Can_get_metadata_with_minimal_DbConnection_implementation()
 {
     // Required for use with MVC Scaffolding that uses Microsoft.VisualStudio.Web.Mvc.Scaffolding.BuiltIn.ScaffoldingDbConnection
     // which is a very minimal implementation of DbConnection.
     using (var connection = new FakeSqlConnection
     {
         ConnectionString = ""
     })
     {
         using (var context = new EmptyContext(connection))
         {
             var metadata = ((IObjectContextAdapter)context).ObjectContext.MetadataWorkspace;
             Assert.NotNull(metadata);
         }
     }
 }
 public FakeSqlCommand(string query, FakeSqlConnection connection)
 {
 }
Exemple #4
0
        public IEnumerable <Employee> GetEmployees(EmployeeFilterType employeeFilterType, string filter, FakeSqlConnection connection)
        {
            if (employeeFilterType == EmployeeFilterType.ByName && filter == null)
            {
                throw new ArgumentNullException("filter");
            }

            string query = "select * from employee, employee_role inner join employee.Id == employee_role.EmployeeId";

            List <Employee> result = new List <Employee>();

            using (FakeSqlCommand sqlCommand = new FakeSqlCommand(query, connection))
            {
                FakeSqlDataReader reader;
                int retryCount = 5;

                while (true)
                {
                    try
                    {
                        reader = sqlCommand.ExecuteReader();
                        break;
                    }
                    catch (Exception)
                    {
                        if (retryCount-- == 0)
                        {
                            throw;
                        }
                    }
                }

                while (reader.Read())
                {
                    int    id         = reader.GetInt32(EmployeeIdColumnIndex);
                    string name       = reader.GetString(EmployeeNameColumnIndex);
                    int    age        = reader.GetInt32(EmployeeAgeColumnIndex);
                    bool   isSalaried = reader.GetBoolean(EmployeeIsSalariedColumnIndex);

                    switch (employeeFilterType)
                    {
                    case EmployeeFilterType.ByName:
                        if (!name.StartsWith(filter))
                        {
                            continue;
                        }
                        break;

                    case EmployeeFilterType.ExemptOnly:
                        if (age < 40 || !isSalaried)
                        {
                            continue;
                        }
                        break;
                    }

                    result.Add(new Employee {
                        Name = name, Id = id, Age = age, IsSalaried = isSalaried
                    });
                }
            }

            return(result);
        }