Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/324.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# ociationEnd.Name.EndsWith(“_Target”); object relatedObject=propertyInfo.GetValue(entityObject,null); foreach(ScalarPropertyMappi_C#_Entity Framework - Fatal编程技术网

C# ociationEnd.Name.EndsWith(“_Target”); object relatedObject=propertyInfo.GetValue(entityObject,null); foreach(ScalarPropertyMappi

C# ociationEnd.Name.EndsWith(“_Target”); object relatedObject=propertyInfo.GetValue(entityObject,null); foreach(ScalarPropertyMappi,c#,entity-framework,C#,Entity Framework,ociationEnd.Name.EndsWith(“_Target”); object relatedObject=propertyInfo.GetValue(entityObject,null); foreach(ScalarPropertyMapping propertyMapping in propertyMappings.propertyMappings) { 字符串columnName=propertyMapping.Column.Name; string paramName=str

ociationEnd.Name.EndsWith(“_Target”); object relatedObject=propertyInfo.GetValue(entityObject,null); foreach(ScalarPropertyMapping propertyMapping in propertyMappings.propertyMappings) { 字符串columnName=propertyMapping.Column.Name; string paramName=string.Format(“@p{0}”,paramCount); 对象columnValue=relatedObject==null? 无效的: relatedObject.GetType().GetProperty(propertyMapping.Property.Name).GetValue(relatedObject,null); 如果(参数计数!=0) { sqlColumns+=“,”; sqlValues+=“,”; } sqlColumns+=SqlQuote(columnName); sqlValues+=string.Format(“@p{0}”,paramCount); DbParameter=command.CreateParameter(); 参数值=列值; parameter.ParameterName=paramName; command.Parameters.Add(参数); paramCount++; } } stringsql=string.Format(“插入到{0}({1})值({2})”,tableName,sqlColumns,sqlValues); command.CommandText=sql; foreach(command.Parameters中的DbParameter参数) { if(parameter.Value==null) parameter.Value=DBNull.Value; } 返回命令; } public int ExecuteUpdateCommand(对象entityObject) { DbCommand=GenerateUpdateCommand(entityObject); ConnectionState oldConnectionState=command.Connection.State; 尝试 { if(oldConnectionState!=ConnectionState.Open) command.Connection.Open(); int result=command.ExecuteNonQuery(); 返回结果; } 最后 { if(oldConnectionState!=ConnectionState.Open) command.Connection.Close(); } } 公共DbCommand GenerateUpdateCommand(对象entityObject) { ObjectContext=((IOObjectContextAdapter)Context).ObjectContext; var metadataWorkspace=((EntityConnection)objectContext.Connection).GetMetadataWorkspace(); IEnumerable entitySetMappingCollection=metadataWorkspace.GetItems(DataSpace.CSSpace).Single().EntitySetMappings; IEnumerable associationSetMappingCollection=metadataWorkspace.GetItems(DataSpace.CSSpace).Single().AssociationSetMappings; 字符串entityTypeName; 如果(!entityObject.GetType().Namespace.Contains(“DynamicProxi”)) entityTypeName=entityObject.GetType().Name; 其他的 entityTypeName=entityObject.GetType().BaseType.Name; var entitySetMappings=entitySetMappingCollection.First(o=>o.EntityTypeMappings.Select(e=>e.EntityType.Name).Contains(entitytytypename)); var entityTypeMapping=entitySetMappings.EntityTypeMappings[0]; string tableName=entityTypeMapping.EntitySetMapping.EntitySet.Name; MappingFragment MappingFragment=entityTypeMapping.Fragments[0]; string sqlColumns=string.Empty; int paramCount=0; DbCommand=Context.Database.Connection.CreateCommand(); foreach(属性映射映射mappingFragment.PropertyMappings中的属性映射) { if(((ScalarPropertyMapping)propertyMapping).Column.StoreGeneratedPattern!=StoreGeneratedPattern.None) 继续; 字符串columnName=((ScalarPropertyMapping)propertyMapping).Column.Name; if(entityTypeMapping.EntityType.KeyProperties.Select(\u=>\ uType.Name).Contains(columnName)) 继续; object columnValue=entityObject.GetType().GetProperty(propertyMapping.Property.Name).GetValue(entityObject,null); string paramName=string.Format(“@p{0}”,paramCount); 如果(参数计数!=0) sqlColumns+=“,”; sqlColumns+=string.Format(“{0}={1}”,SqlQuote(columnName),paramName); DbParameter=command.CreateParameter(); parameter.Value=columnValue??DBNull.Value; parameter.ParameterName=paramName; command.Parameters.Add(参数); paramCount++; } foreach(entityTypeMapping.EntityType.NavigationProperties中的var navigationProperty) { PropertyInfo PropertyInfo=entityObject.GetType().GetProperty(navigationProperty.Name); if(typeof(System.Collections.IEnumerable.IsAssignableFrom(propertyInfo.PropertyType)) 继续; AssociationSetMapping AssociationSetMapping=associationSetMappingCollection.First(a=>a.AssociationSet.ElementType.FullName==navigationProperty.RelationshipType.FullName); EndPropertyMapping propertyMappings=associationSetMapping.AssociationTypeMapping.MappingFragment.propertyMappings.Cast().First(p=>p.AssociationEnd.Name.EndsWith(“_Target”); object relatedObject=propertyInfo.GetValue(entityObject,null); foreach(ScalarPropertyMapping propertyMapping in propertyMappings.propertyMappings) { 字符串columnName=propertyMapping.Column.Name; string paramName=string.Format(“@p{0}”,paramCount); 对象columnValue=relatedObject==null? 无效的: relatedObject.GetType().GetProperty(propertyMapping.Property.Name).GetValue(relatedObject,null); 如果(参数计数!=0) sqlColumns+=“,”; sqlColumns+=string.Format(“{0}={1}”,SqlQuote(columnName),paramName); DbParameter=command.CreateParameter(); parameter.Value=columnValue??DBNull.Value; parameter.ParameterName=paramName; command.Parameters.Add(参数); paramCount++; } } 字符串sqlWhere=string.Empty; bool first=true; foreach(entityTypeMapping.EntityType.KeyProperties中的EdmProperty keyProperty) { var propertyMapping=mappingFragment.PropertyMappings.First(p=>p.Property.Name==keyProperty.Name); 字符串columnName=((ScalarPropertyMapping)propertyMapping).Column.Name; object columnValue=entityObject.GetType().GetPr
var userService = IoC.GetInstance<IUserService>();
var users  = userService.GetAll().Where(x => x.IsRegistered == true);

var statisticsService = IoC.GetInstance<IStatisticsService>();

foreach (var user in users.ToList())
{
   var statistic1 = GetStatistic(1); // this returns an object
   var statistic 2 = GetStatistic(2);

   statisticsService.Add(statistic1);
   statisticsService.Add(statistic2);

   statisticsService.Commit(); /* this is essentially a dbContext.SaveChanges(); */
}

function Statistic GetStatistic(int statisticnumber)
{
   var stat = new Statistic();
   stat.Type = statisticnumber;

   switch(statisticnumber) {
       case 1:
          stat.Value = /* query to count how many times they've logged in */
          break;
       case 2:
          stat.Value = /* query to get their average score */
          break;
       ...
    }
    return stat;
}
public int ExecuteInsertCommand(object entityObject)
{
    DbCommand command = GenerateInsertCommand(entityObject);
    ConnectionState oldConnectionState = command.Connection.State;
    try
    {
        if (oldConnectionState != ConnectionState.Open)
            command.Connection.Open();
        int result = command.ExecuteNonQuery();
        return result;

    }
    finally
    {
        if (oldConnectionState != ConnectionState.Open)
            command.Connection.Close();
    }
}

public DbCommand GenerateInsertCommand(object entityObject)
{

    ObjectContext objectContext = ((IObjectContextAdapter)Context).ObjectContext;
    var metadataWorkspace = ((EntityConnection)objectContext.Connection).GetMetadataWorkspace();

    IEnumerable<EntitySetMapping> entitySetMappingCollection = metadataWorkspace.GetItems<EntityContainerMapping>(DataSpace.CSSpace).Single().EntitySetMappings;
    IEnumerable<AssociationSetMapping> associationSetMappingCollection = metadataWorkspace.GetItems<EntityContainerMapping>(DataSpace.CSSpace).Single().AssociationSetMappings;

    var entitySetMappings = entitySetMappingCollection.First(o => o.EntityTypeMappings.Select(e => e.EntityType.Name).Contains(entityObject.GetType().Name));

    var entityTypeMapping = entitySetMappings.EntityTypeMappings[0];
    string tableName = entityTypeMapping.EntitySetMapping.EntitySet.Name;

    MappingFragment mappingFragment = entityTypeMapping.Fragments[0];

    string sqlColumns = string.Empty;
    string sqlValues = string.Empty;
    int paramCount = 0;

    DbCommand command = Context.Database.Connection.CreateCommand();

    foreach (PropertyMapping propertyMapping in mappingFragment.PropertyMappings)
    {
        if (((ScalarPropertyMapping)propertyMapping).Column.StoreGeneratedPattern != StoreGeneratedPattern.None)
            continue;

        string columnName = ((ScalarPropertyMapping)propertyMapping).Column.Name;
        object columnValue = entityObject.GetType().GetProperty(propertyMapping.Property.Name).GetValue(entityObject, null);
        string paramName = string.Format("@p{0}", paramCount);

        if (paramCount != 0)
        {
            sqlColumns += ",";
            sqlValues += ",";
        }

        sqlColumns += SqlQuote(columnName);
        sqlValues += paramName;

        DbParameter parameter = command.CreateParameter();
        parameter.Value = columnValue;
        parameter.ParameterName = paramName;
        command.Parameters.Add(parameter);

        paramCount++;
    }

    foreach (var navigationProperty in entityTypeMapping.EntityType.NavigationProperties)
    {
        PropertyInfo propertyInfo = entityObject.GetType().GetProperty(navigationProperty.Name);
        if (typeof(System.Collections.IEnumerable).IsAssignableFrom(propertyInfo.PropertyType))
            continue;

        AssociationSetMapping associationSetMapping = associationSetMappingCollection.First(a => a.AssociationSet.ElementType.FullName == navigationProperty.RelationshipType.FullName);

        EndPropertyMapping propertyMappings = associationSetMapping.AssociationTypeMapping.MappingFragment.PropertyMappings.Cast<EndPropertyMapping>().First(p => p.AssociationEnd.Name.EndsWith("_Target"));

        object relatedObject = propertyInfo.GetValue(entityObject, null);

        foreach (ScalarPropertyMapping propertyMapping in propertyMappings.PropertyMappings)
        {
            string columnName = propertyMapping.Column.Name;
            string paramName = string.Format("@p{0}", paramCount);
            object columnValue = relatedObject == null ?
                null :
                relatedObject.GetType().GetProperty(propertyMapping.Property.Name).GetValue(relatedObject, null);

            if (paramCount != 0)
            {
                sqlColumns += ",";
                sqlValues += ",";
            }

            sqlColumns += SqlQuote(columnName);
            sqlValues += string.Format("@p{0}", paramCount);

            DbParameter parameter = command.CreateParameter();
            parameter.Value = columnValue;
            parameter.ParameterName = paramName;
            command.Parameters.Add(parameter);

            paramCount++;
        }
    }

    string sql = string.Format("INSERT INTO {0} ({1}) VALUES ({2})", tableName, sqlColumns, sqlValues);
    command.CommandText = sql;

    foreach (DbParameter parameter in command.Parameters)
    {
        if (parameter.Value == null)
            parameter.Value = DBNull.Value;
    }

    return command;
}

public int ExecuteUpdateCommand(object entityObject)
{
    DbCommand command = GenerateUpdateCommand(entityObject);
    ConnectionState oldConnectionState = command.Connection.State;
    try
    {
        if (oldConnectionState != ConnectionState.Open)
            command.Connection.Open();
        int result = command.ExecuteNonQuery();
        return result;
    }
    finally
    {
        if (oldConnectionState != ConnectionState.Open)
            command.Connection.Close();
    }
}

public DbCommand GenerateUpdateCommand(object entityObject)
{

    ObjectContext objectContext = ((IObjectContextAdapter)Context).ObjectContext;
    var metadataWorkspace = ((EntityConnection)objectContext.Connection).GetMetadataWorkspace();

    IEnumerable<EntitySetMapping> entitySetMappingCollection = metadataWorkspace.GetItems<EntityContainerMapping>(DataSpace.CSSpace).Single().EntitySetMappings;
    IEnumerable<AssociationSetMapping> associationSetMappingCollection = metadataWorkspace.GetItems<EntityContainerMapping>(DataSpace.CSSpace).Single().AssociationSetMappings;

    string entityTypeName;
    if (!entityObject.GetType().Namespace.Contains("DynamicProxi"))
        entityTypeName = entityObject.GetType().Name;
    else
        entityTypeName = entityObject.GetType().BaseType.Name;
    var entitySetMappings = entitySetMappingCollection.First(o => o.EntityTypeMappings.Select(e => e.EntityType.Name).Contains(entityTypeName));

    var entityTypeMapping = entitySetMappings.EntityTypeMappings[0];
    string tableName = entityTypeMapping.EntitySetMapping.EntitySet.Name;

    MappingFragment mappingFragment = entityTypeMapping.Fragments[0];

    string sqlColumns = string.Empty;
    int paramCount = 0;

    DbCommand command = Context.Database.Connection.CreateCommand();

    foreach (PropertyMapping propertyMapping in mappingFragment.PropertyMappings)
    {
        if (((ScalarPropertyMapping)propertyMapping).Column.StoreGeneratedPattern != StoreGeneratedPattern.None)
            continue;

        string columnName = ((ScalarPropertyMapping)propertyMapping).Column.Name;

        if (entityTypeMapping.EntityType.KeyProperties.Select(_ => _.Name).Contains(columnName))
            continue;

        object columnValue = entityObject.GetType().GetProperty(propertyMapping.Property.Name).GetValue(entityObject, null);
        string paramName = string.Format("@p{0}", paramCount);

        if (paramCount != 0)
            sqlColumns += ",";

        sqlColumns += string.Format("{0} = {1}", SqlQuote(columnName), paramName);

        DbParameter parameter = command.CreateParameter();
        parameter.Value = columnValue ?? DBNull.Value;
        parameter.ParameterName = paramName;
        command.Parameters.Add(parameter);

        paramCount++;
    }

    foreach (var navigationProperty in entityTypeMapping.EntityType.NavigationProperties)
    {
        PropertyInfo propertyInfo = entityObject.GetType().GetProperty(navigationProperty.Name);
        if (typeof(System.Collections.IEnumerable).IsAssignableFrom(propertyInfo.PropertyType))
            continue;

        AssociationSetMapping associationSetMapping = associationSetMappingCollection.First(a => a.AssociationSet.ElementType.FullName == navigationProperty.RelationshipType.FullName);

        EndPropertyMapping propertyMappings = associationSetMapping.AssociationTypeMapping.MappingFragment.PropertyMappings.Cast<EndPropertyMapping>().First(p => p.AssociationEnd.Name.EndsWith("_Target"));

        object relatedObject = propertyInfo.GetValue(entityObject, null);


        foreach (ScalarPropertyMapping propertyMapping in propertyMappings.PropertyMappings)
        {
            string columnName = propertyMapping.Column.Name;
            string paramName = string.Format("@p{0}", paramCount);
            object columnValue = relatedObject == null ?
                null :
                relatedObject.GetType().GetProperty(propertyMapping.Property.Name).GetValue(relatedObject, null);

            if (paramCount != 0)
                sqlColumns += ",";

            sqlColumns += string.Format("{0} = {1}", SqlQuote(columnName), paramName);

            DbParameter parameter = command.CreateParameter();
            parameter.Value = columnValue ?? DBNull.Value;
            parameter.ParameterName = paramName;
            command.Parameters.Add(parameter);

            paramCount++;
        }
    }


    string sqlWhere = string.Empty;
    bool first = true;
    foreach (EdmProperty keyProperty in entityTypeMapping.EntityType.KeyProperties)
    {
        var propertyMapping = mappingFragment.PropertyMappings.First(p => p.Property.Name == keyProperty.Name);
        string columnName = ((ScalarPropertyMapping)propertyMapping).Column.Name;
        object columnValue = entityObject.GetType().GetProperty(propertyMapping.Property.Name).GetValue(entityObject, null);
        string paramName = string.Format("@p{0}", paramCount);

        if (first)
            first = false;
        else
            sqlWhere += " AND ";

        sqlWhere += string.Format("{0} = {1}", SqlQuote(columnName), paramName);

        DbParameter parameter = command.CreateParameter();
        parameter.Value = columnValue;
        parameter.ParameterName = paramName;
        command.Parameters.Add(parameter);

        paramCount++;

    }


    string sql = string.Format("UPDATE {0} SET {1} WHERE {2}", tableName, sqlColumns, sqlWhere);
    command.CommandText = sql;

    return command;
}
foreach (var user in users.ToList())
{
   var statisticsService = new Instance<IStatisticsService>();

   var statistic1 = GetStatistic(1); // this returns an object
   var statistic 2 = GetStatistic(2);

   statisticsService.Add(statistic1);
   statisticsService.Add(statistic2);

   statisticsService.Commit(); /* this is essentially a dbContext.SaveChanges(); */
}
// Easy to use
context.BulkSaveChanges();

// Easy to customize
context.BulkSaveChanges(bulk => bulk.BatchSize = 100);

// Perform Bulk Operations
context.BulkDelete(customers);
context.BulkInsert(customers);
context.BulkUpdate(customers);

// Customize Primary Key
context.BulkMerge(customers, operation => {
   operation.ColumnPrimaryKeyExpression = 
        customer => customer.Code;
});