我正在构建一个带有Oracle后端的Intranet Web应用程序.由于对此讨论不重要的原因,Oracle DB将在另一台服务器上复制.我有理由相信我们将使用Oracle Basic Replication,而不是Advanced.
有人可以向我解释为什么围绕主键的大多数讨论都是这样的:
似乎没有人解释为什么复制的异常,我不明白为什么.
我目前正在开发一个ASP.NET MVC应用程序,在数据库中有大量的PK-FK关系.在开发之初,我正在与之合作的团队投票反对我对所有PK使用INT的建议......他们决定使用GUID.
长篇故事......团队分道扬and,现在我可以控制改变事物......我从WebForms切换到MVC,我想将所有的Guid转换为Ints ...我讨厌丑陋的URL就像"YUCK !!加上索引guid所涉及的开销......加上它可能对我的Linq to Entities模型没有帮助.
使用SQLServer 2008,ASP.NET MVC 2,Linq to Entities(实体框架)
任何人都知道快速将这些讨厌的guid转换成int的方法吗?
sql-server linq-to-entities database-design guid asp.net-mvc-2
我希望这是我在最后做的一个简单的蠢事......
我的数据库中有一个表设置如下:
column name: widget_guid data type: uniqueidentifier allow nulls: false default value: newid() identity: false row guid: true
创建记录(通过LINQ to SQL)时,此字段中的值被格式化为GUID但包含全0
我的假设是,当创建一个新记录时,将为该列自动生成一个guid,就像一个自动递增的行id.这不是真的吗?任何帮助将不胜感激.
谢谢.
我有一个ASP.NET应用程序,通过C#在代码隐藏中生成GUID.这些GUID通过以下方式生成:
Guid id = Guid.NewGuid();
Run Code Online (Sandbox Code Playgroud)
此GUID稍后存储在SQL Server 2008数据库中.我还有一个存储过程将更新该记录.我想在存储过程中生成一个GUID,其格式与ASP.NET中生成的格式相同.
有人可以告诉我怎么做吗?
谢谢!
有没有办法从SQL 2005数据库中获取唯一的数据库标识符(如GUID)?
我发现这篇文章:http://msdn.microsoft.com/en-us/library/microsoft.sqlserver.management.smo.database.databaseguid%28v=sql.90%29.aspx
但是,我需要能够从T-SQL而不是VB获取DatabaseGuid.
编辑:我试图唯一确定我连接的数据库.通过代码我在SQL Compact和SQL Server之间手动同步记录.现在我的用户处于测试环境中,并且当他们将来指向生产SQL时,我将需要重新同步整个表而不是依赖于rowversion.生产服务器上的rowversions将有所不同,如果我能够检测到数据库GUID更改,我可以重新同步整个表.
提前致谢.
我正在尝试使用MongoDB shell删除文档,但由于某种原因,它一直在失败"无效对象id:length"
查询:
db.collections.remove( { _id : ObjectId("FF125DF6-E977-404A-9E8C-600CDAFEFF53" )} );
Run Code Online (Sandbox Code Playgroud)
错误:
周一12月24日3时十一分15秒断言:10448:无效对象ID:长度0x6073f1 0x5d1aa9 0x5ac3f1 0x5b84f4 0x6aa5ac 0x6aaec8 0x69e4e7 0x6aa13f 0x668e46 0x668ec2 0x66a2ce 0x5cbcc4 0x4a44a6 0x4a67e6 0x7f2554e2fcdd 0x49f669蒙戈(_ZN5mongo15printStackTraceERSo + 0×21)[0x6073f1]蒙戈(_ZN5mongo11msgassertedEiPKc + 0x99)[0x5d1aa9 ]蒙戈()[0x5ac3f1]蒙戈(_ZN5mongo21object_id_constructorEP9JSContextP8JSObjectjPlS4_ + 0x2b4)[0x5b84f4]蒙戈(js_Invoke +量0x40C)[0x6aa5ac]蒙戈(js_InvokeConstructor +量0x108)[0x6aaec8]蒙戈(js_Interpret + 0x37c7)[0x69e4e7]蒙戈(js_Execute + 0x36f) 0x6aa13f]蒙戈(JS_EvaluateUCScriptForPrincipals + 0x66)[0x668e46]蒙戈(JS_EvaluateUCScript +为0x22)[0x668ec2]蒙戈(JS_EvaluateScript + 0x6e)[0x66a2ce]蒙戈(_ZN5mongo7SMScope4execERKNS_10StringDataERKSsbbbi +量0x144)[0x5cbcc4]蒙戈(_Z5_mainiPPc + 0x2156)[0x4a44a6]蒙戈(主+ 0x26)[0x4a67e6] /lib64/libc.so.6(__libc_start_main+0xfd)[0x7f2554e2fcdd] mongo(__ gxx_personality_v0 + 0x2a1)[0x49f669] Mon Dec 24 03:11:15错误:无效对象i d:长度(壳):1
我试过跑步
db.repairDatabase();
Run Code Online (Sandbox Code Playgroud)
但没有任何改变.从检查周围我看到它的一个已知问题,有一个解决方法吗?
编辑
这是db中的文档:
{
"_id":"FF125DF6-E977-404A-9E8C-600CDAFEFF53",
"数据":{
Run Code Online (Sandbox Code Playgroud)"files": [ ], "categories": [ ], "trash": [ ] } …
我为我的directorys /文件做了一个预构建活动.现在它创建source.wxs很好,但只有'GUID ="*"',所以现在我得到编译器错误,因为它没有映射到ProgrammFilesFolder,但每个组件都需要一个唯一的GUID:
Path" %SystemDrive%\st /MIR
"%WIX%\bin\heat.exe" dir %SystemDrive%\st -dr INSTALLDIRECTORYFOLDER -cg SourceComponentGroup -var var.SourcePath -ag -out "$(SolutionDir).\Setup\source.wxs"
Run Code Online (Sandbox Code Playgroud)
结果:
<Component Id="cmp97CD2699CFD0E466AE00E9EE0BC75B3D" Directory="dirE9158D60656EC6CD461378A2C8EDC064" Guid="*">
<File Id="filD6533D5A559BC86E4704F435FEEE2A5A" KeyPath="yes" Source="$(var.SourcePath)\test1.txt" />
</Component>
Run Code Online (Sandbox Code Playgroud)
是否有任何参数我可以改变以获得所需的效果?我找不到有关参数的任何文档.
我一直在尝试使用ComImport为我正在编写的C#应用程序设置一些与各种dll中的win32类的互操作.我不明白你是如何找到班级的GUID的?我找到了一些有效的导入示例,但我不确定作者是如何找到类的GUID的.下面列出了导入IFileDialog及其方法之一的示例.
[ComImport(), Guid("42F85136-DB7E-439C-85F1-E4075D135FC8"), InterfaceType(ComInterfaceType.InterfaceIsIUnknown)]
internal interface IFileDialog {
[MethodImpl(MethodImplOptions.InternalCall, MethodCodeType = MethodCodeType.Runtime)]
[PreserveSig()]
uint Show([In, Optional] IntPtr hwndOwner); //IModalWindow
Run Code Online (Sandbox Code Playgroud)
我正在使用Visual Studio 2012,我可以看到如何在COM选项卡上的Microsoft Shell控件和自动化中添加对shell32.dll的引用,但这似乎对我没有任何作用.我在这里错过了什么?你在哪里找到GUID?有没有办法让Visual Studio生成上面列出的代码,或者我是否需要找到每个类的GUID,然后编写上面列出的方法导入?
我有一个C#应用程序,它为我插入表中的每一行生成一个顺序GUID.我希望插入的GUID是顺序的,但有时它们会破坏序列(以块为单位).
例:
这些GUID按插入顺序显示.
为什么这些"顺序"GUID是在如此大的序列中断的情况下创建的?
用于生成顺序GUID的代码:
class NativeMethods
{
[DllImport("rpcrt4.dll", SetLastError = true)]
public static extern int UuidCreateSequential(out Guid guid);
}
public static Guid CreateSequentialGuid()
{
const int RPC_S_OK = 0;
Guid guid;
int result = NativeMethods.UuidCreateSequential(out guid);
if (result == RPC_S_OK)
return guid;
else
return Guid.NewGuid(); //<--In debugging, this statement never runs.
}
Run Code Online (Sandbox Code Playgroud)
循环中使用的代码,用于将新GUID和信息插入表中:
Guid mySequentialGUID = CreateSequentialGuid();
string[] row = { item1,
item2,
item3,
sourceText,
encoding.ToString(),
mySequentialGUID.ToString()
};
var listViewItem = new ListViewItem(row);
myListView.Items.Add(listViewItem);
Run Code Online (Sandbox Code Playgroud)
编辑:请参阅此问题以了解顺序GUID:
我正在使用带有UUID的Firebird数据库作为主键但我遇到了以下问题:
我的C#应用程序中相同Guid的文本表示与数据库的不同.我正在使用UUID_TO_CHAR函数和我的C#应用程序中的数据库中获取文本表示Guid.ToString().
区别在于Firebird数据库解释UUID与.net框架的方式,我相信他们用不同的字节顺序读取它们
例如,数据库中的guid如下所示:
FADE3E40-6227-5B40-BBB9-8492859EBA66
Run Code Online (Sandbox Code Playgroud)
我的C#应用程序中的相同guid看起来像这样:
403edefa-2762-405b-bbb9-8492859eba66
Run Code Online (Sandbox Code Playgroud)
有没有办法在我的数据库中显示它们与在C#中显示的方式相同.或相反亦然?
有没有办法在从数据库中获取它们并将它们放入数据库时进行转换,因此我不必在任何地方使用格式?
guid ×10
c# ×4
sql ×2
sql-server ×2
.net ×1
com ×1
database ×1
firebird ×1
firebird2.5 ×1
linq-to-sql ×1
mongodb ×1
primary-key ×1
replication ×1
sequential ×1
shell ×1
t-sql ×1
uuid ×1
wix ×1
wix3 ×1
wix3.5 ×1
xml ×1