小编nir*_*rpi的帖子

在运行时更改模式名称 - 实体框架

我需要在运行时更改实体的存储架构.我已经关注了一篇很棒的帖子,可以在这里找到:http: //blogs.microsoft.co.il/blogs/idof/archive/2008/08/22/change-entity-framework-storage-db-schema-in-runtime的.aspx?CommentPosted =真#commentmessage

这非常有效,但仅适用于查询,不适用于修改.

知道为什么吗?

schema entity-framework runtime

22
推荐指数
3
解决办法
2万
查看次数

实体框架BuildContainsExpression导致内部.NET Framework数据提供程序错误1025

我正在尝试使用以下LINQ查询来对数据库(3.5 SP1)起作用:

var labelIds = new List<int> { 1, 2 };
var customersAggregatedTransactionsByType =
    (from transactions in context.TransactionSet
    from customers in context.CustomerSet
        .Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))
    from accounts in context.AccountSet
    where customers == accounts.Customer
        && accounts.Id == transactions.Account.Id
        && transactions.DateTime >= fromDate && transactions.DateTime < toDate
    group transactions.Amount
    by new
    {
        UserAccountId = transactions.Account.Id,
        TransactionTypeId = transactions.TransactionTypeId,
        BaseAssetId = accounts.BaseAssetId
    } into customerTransactions
    select customerTransactions).ToList();
Run Code Online (Sandbox Code Playgroud)

一旦我添加,Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, labelIds))我得到以下异常:

System.InvalidOperationException:内部.NET Framework数据提供程序错误1025.

如果我删除Where(LinqTools.BuildContainsExpression<Billing.Customer, int>(u => u.LabelId, …

entity-framework internal

9
推荐指数
1
解决办法
3437
查看次数

ASP .Net MVC和WCF身份(声明)集成

我们正在构建一个客户端是ASP .Net MVC的平台,使用ASP Net Identity 2.0进行身份验证和授权(使用声明),这在网络端非常有用.

我们还有一个WCF服务,允许对数据库(对于多个客户端应用程序)进行CRUD操作,该服务从这个ASP .Net MVC客户端获取请求.由于我们希望在WCF端进行特定CRUD操作之前验证(验证和授权)用户,因此我们需要从客户端获取用户的声明,并执行验证(最好使用标头或任何非常干净的方式)绑定,WCF将能够支持此事项).

我一直在搜索不同的论坛,但没有简单的答案\教程这个特定的场景.谁能协助解决这个问题?

谢谢,Nir.

asp.net-mvc wcf wcf-security claims-based-identity asp.net-identity

6
推荐指数
1
解决办法
858
查看次数

MongoDB中的部分更新C#驱动程序 - 字典问题

我正在尝试使用以下方法构建一个通用方法来处理MongoDB C#驱动程序的所有部分更新:

public bool UpdateObject<T>(UpdatableObject<T> updatableObject)
    where T : new()
{
    var builder = GenerateMongoUpdateBuilder(updatableObject.ModifiedFields);
    var collection = GetCollection<T>();
    var result = collection.Update(Query.EQ("_id", BsonValue.Create(updatableObject.Id)), builder, new MongoUpdateOptions { Flags = UpdateFlags.Multi });
    return result.UpdatedExisting;
}

private static UpdateBuilder GenerateMongoUpdateBuilder(Dictionary<string, object> modifiedFields)
{
    var builder = new UpdateBuilder();
    foreach (var modifiedField in modifiedFields)
    {
        var type = modifiedField.Value.GetType();
        if (type.IsPrimitive || type.IsValueType || (type == typeof(string)))
        {
            builder.Set(modifiedField.Key, BsonValue.Create(modifiedField.Value));
        }
        else
        {
            builder.Set(modifiedField.Key, modifiedField.Value.ToBsonDocument());
        }
    }
    return builder;
}
Run Code Online (Sandbox Code Playgroud)

我不得不挣扎一段时间,直到我找到解决方案通过BsonValue处理原始类型和通过BsonDocument处理非原始类型.一切都运作良好,直到...我们创建了一个包含字典的对象.插入工作完美,但一旦进入更新(使用此方法) - …

c# dictionary partial mongodb

5
推荐指数
1
解决办法
1624
查看次数

枚举和WCF - 有意义的错误?

我正在尝试克服WCF和枚举的问题,我正在尝试将对象从服务器传递到包含枚举的客户端(或其他服务器).枚举以1开头,故意.枚举初始化时以及在其中定义值时,一切都很顺利,但是当它未在枚举中定义时,我得到了这个非常好的(并且非常具有描述性(...))错误消息:

"底层连接已关闭:连接意外关闭."

我试图实现的是当我得到这个场景时,无论是从数据库中的损坏数据(无论如何都被转换为枚举,这是非常奇怪的),或者当开发人员忘记在启动对象时设置枚举值时,要获得有意义的消息,例如"枚举值无效,请键入:{0},值:{1}".

我试图在类的枚举和getter中使用"Enum.IsDefined",并将有意义的异常抛给客户端(或其他服务器),但仍然出现"连接关闭"错误(当允许调试服务器我得到了有意义的消息,但仅在服务器端).

这是enum setter和getter的片段:

    private TestEnum m_TestEnum;

    [DataMember]
    public TestEnum TestEnum 
    {
        get
        {
            if (Enum.IsDefined(typeof(TestEnum), m_TestEnum))
            {
                return m_TestEnum;
            }
            else
            {
                throw new ApplicationException("Enum value is not valid: " + m_TestEnum);
            }
        }
        set
        {
            if (Enum.IsDefined(typeof(TestEnum), value))
            {
                m_TestEnum = value;
            }
            else
            {
                throw new ApplicationException("Enum value is not valid: " + value);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)

从0开始枚举(带有"未知"值)不够好,因为我仍然可以获得枚举中不存在的值.我可以结合两种解决方案,我检查"IsDefined"并将枚举设置为"未知"值,但仍然 - 这不是理想的解决方案,因为我们想知道这些情况,以便在开发周期中解决它们.

你说什么?谢谢,Nir.

.net wcf enums

0
推荐指数
1
解决办法
3293
查看次数