相关疑难解决方法(0)

使用GUID作为主键的最佳做法是什么,特别是在性能方面?

我有一个应用程序在几乎所有表中使用GUID作为主键,我已经读过使用GUID作为主键时存在性能问题.老实说,我没有看到任何问题,但我即将开始一个新的应用程序,我仍然想使用GUID作为主键,但我想使用复合主键(GUID和可能是另一个字段) .)

我正在使用GUID,因为当您拥有不同的环境(如"生产","测试"和"开发"数据库)以及数据库之间的迁移数据时,它们很好并且易于管理.

我将使用Entity Framework 4.3,我想在将其插入数据库之前在应用程序代码中分配Guid.(即我不想让SQL生成Guid).

创建基于GUID的主键的最佳做法是什么,以避免与此方法相关的假设性能命中?

sql-server database-design entity-framework guid primary-key

311
推荐指数
4
解决办法
15万
查看次数

使用LINQ从字符串中删除字符

我正在尝试通过编写一些简单的扩展方法来刷新我的LINQ.有没有更好的方法来编写如下函数从字符串中删除给定的字符列表(使用LINQ)?

它帮助我思考LINQ首先依赖的扩展方法:

public static string Remove(this string s, IEnumerable<char> chars)
{
    string removeChars = string.Concat(chars);

    return new string(s.ToCharArray().Where(c => !removeChars.Contains(c)).ToArray());
}
Run Code Online (Sandbox Code Playgroud)

但那很难看.Ergo LINQ.

我在LINQ语句中注意到的差异是我必须使用'select'而使用扩展方法,我不必这样做.

/// <summary>Strip characters out of a string.</summary>
/// <param name="chars">The characters to remove.</param>
public static string Remove(this string s, IEnumerable<char> chars)
{
    string removeChars = string.Concat(chars);

    var stripped = from c in s.ToCharArray()
                   where !removeChars.Contains(c)
                   select c;

    return new string(stripped.ToArray());
}
Run Code Online (Sandbox Code Playgroud)

所以我想知道这个(上面的最后一个片段)是否是用于完成字符删除的最简洁的LINQ语句.

c# linq

13
推荐指数
1
解决办法
1万
查看次数

从int创建一个Guid

鉴于int,你怎么能反复创建同一个Guid?

编辑:
我正在集成两个系统,一个使用int作为主键,另一个通过它的Guid识别一个对象.因此,我需要能够为给定的int重新创建相同的Guid,以便第二个系统可以识别来自第一个的实体.

c# guid

11
推荐指数
3
解决办法
1万
查看次数