- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
使用 GitHub 中提供的建议,我能够生成 ASP.net 项目所需的 EDMX 文件。使用如下命令:
"%windir%\Microsoft.NET\Framework\v4.0.30319\edmgen.exe" /mode:fullgeneration /c:"Data Source=%datasourceserver%; Initial Catalog=School; Integrated Security=SSPI" /project:School /entitycontainer:SchoolEntities /namespace:SchoolModel /language:CSharp
但我不知道如何生成随附的 edmx.diagram 文件,如果我们通过 ADO.Net 数据模型添加到现有项目来创建 EDMX,则该文件会在 Visual Studio 中生成。
该文件也可以在 Visual Studio 中打开,以 UML 图的形式查看数据库结构,如下所示:
我还从官方documentation 阅读了关于如何使用 edmgen.exe 生成 edmx 文件的文档。 .
我认为 Microsoft 文档中遗漏了生成 edmx.document 文件的文档,我自己无法为此提出解决方案。我在这个问题上被困了很长一段时间,需要帮助来解决这个问题。
我使用了类似的机制来生成 SQL2LINQ 中所需的文件转换器项目。拥有这种能力可能会大有帮助。请帮助我。
编辑 1:我注意到 edmx.diagram 文件具有这样的属性。我不确定的是 Visual Studio 是否在内部使用其他一些可执行文件来生成图表文件,或者是否有一个未记录的标志可以通过命令行创建图表文件。请原谅我在最初发布问题时编辑此信息不可用。
编辑 2:我使用的过程中涉及的所有步骤:
第 1 步:复制我的 resource files到我需要生成 edmx 和依赖文件的文件夹。
注意:这些文件是虚拟文件,将从我粘贴在问题中的命令行命令生成。
第 2 步:通过导航到同一路径运行命令行命令。
第3步:运行命令行后,从用户那里收集的连接字符串将有助于在同一目录中生成必要的CSDL、SSDL和MSL文件。然后读取文件并将其替换为我包含在上面链接的资源文件夹中的 edmx 文件。
第 4 步:运行 textTransform.bat 文件以从 Texttransform.exe 的 Windows SDK 路径运行 texttransform.exe。
观察:在此阶段,将创建 6 个文件中的 5 个,即:
对应于用户提供的名称。
但是文件 .edmx.diagram 丢失了。
执行第 1 步到第 4 步的代码:
internal class Globals {
public static string EDMXworkingDirectory = @"C:\ERachana\EDMX\EDMXFiles\EDMXParts";
public static bool isEDMXAlreadyGenerated = false;
public static string Server = "",Database = "", UserName = "",Password = "";
public static string ProjectName = "", UserDefinedObjectName = "_appdb", TemporaryDirectoryPath="";
public static string GetSubstringBetweenStrings(string Full, string startMatch, string endMatch) {
int pFrom = Full.IndexOf(startMatch) + startMatch.Length;
int pTo = Full.LastIndexOf(endMatch);
if (pTo > pFrom)
return Full.Substring(pFrom, pTo - pFrom);
else
return "";
}
public static void GenerateORMFiles() {
string workingDirectory = EDMXworkingDirectory;
if (!isEDMXAlreadyGenerated) {
// Show Progress Bar here
try {
isEDMXAlreadyGenerated = true;
Directory.CreateDirectory(@"C:\ERachana");
Directory.CreateDirectory(@"C:\ERachana\EDMX");
Directory.CreateDirectory(@"C:\ERachana\EDMX\EDMXFiles");
Directory.CreateDirectory(workingDirectory);
string CommandToCreateEDMXOnCommandLine = "\"%windir%\\Microsoft.NET\\Framework\\v4.0.30319\\edmgen.exe\" /mode:fullgeneration /c:\"data source = "
+ Server + "; initial catalog = "
+ Database + "; user id = "
+ UserName + "; password = "
+ Password + "; MultipleActiveResultSets = True; persist security info = True; App = EntityFramework\" /project:DataModel /entitycontainer:DBContext /namespace:Models /language:CSharp & exit";
string ResourcesDirectory = Path.GetDirectoryName(Assembly.GetExecutingAssembly().Location) + @"\Resources\";
string EDMXFileName = "DataModel.edmx";
string ContextFileName = "DataModel.Context.tt";
string TablesFileName = "DataModel.tt";
string EdmxLocation = workingDirectory + @"\" + EDMXFileName;
File.Copy(Path.Combine(ResourcesDirectory, EDMXFileName), EdmxLocation, true);
File.Copy(Path.Combine(ResourcesDirectory, ContextFileName), workingDirectory + @"\" + ContextFileName, true);
File.Copy(Path.Combine(ResourcesDirectory, TablesFileName), workingDirectory + @"\" + TablesFileName, true);
using (var process = new Process()) {
var startInfo = new ProcessStartInfo {
WorkingDirectory = workingDirectory,
WindowStyle = ProcessWindowStyle.Minimized,
CreateNoWindow = true,
RedirectStandardInput = true,
UseShellExecute = false,
FileName = "cmd.exe",
Verb = "runas"
};
process.StartInfo = startInfo;
process.Start();
process.StandardInput.WriteLine(CommandToCreateEDMXOnCommandLine);
process.WaitForExit();
process.Close();
process.Dispose();
}
string text = File.ReadAllText(EdmxLocation);
string c = "";
c = parseSCMDLFiles(workingDirectory + @"\DataModel.ssdl", "Schema");
text = text.Replace("###StorageModelsSchema", c);
c = parseSCMDLFiles(workingDirectory + @"\DataModel.csdl", "Schema");
text = text.Replace("###ConceptualModelsSchema", c);
c = parseSCMDLFiles(workingDirectory + @"\DataModel.msl", "Mapping");
text = text.Replace("###Mappings", c);
File.WriteAllText(EdmxLocation, text);
string[] fileToBeDeleted = Directory.GetFiles(workingDirectory);
foreach (string filePath in fileToBeDeleted) {
if (filePath.Contains("DataModel.ObjectLayer.cs") || filePath.Contains("DataModel.Views.cs")) {
File.Delete(filePath);
} else {
if (filePath.ToLower().Contains(".edmx") || filePath.ToLower().Contains(".tt") || filePath.ToLower().Contains(".cs"))
continue;
File.Delete(filePath);
}
}
string location = @"C:\ERachana\EDMX";
string TransformFileName = "transform_all.bat";
File.Copy(Path.Combine(ResourcesDirectory, TransformFileName), location + @"\" + TransformFileName, true);
string batFileCommand = "/C " + location + @"\" + TransformFileName;
using (var process = new Process()) {
var startInfo = new ProcessStartInfo() {
WorkingDirectory = location,
WindowStyle = ProcessWindowStyle.Minimized,
CreateNoWindow = true,
UseShellExecute = false,
FileName = @"cmd.exe",
Verb = "runas",
Arguments = batFileCommand
};
process.StartInfo = startInfo;
process.Start();
process.WaitForExit();
process.Close();
process.Dispose();
}
} catch {
MessageBox.Show("Only Projects with MSSQL may be converted to Web Projects");
} finally {
// Close Progressbar here
}
}
}
public static string parseSCMDLFiles(string EDMXDirectoryFile, string tag) {
List<string> lines = File.ReadLines(EDMXDirectoryFile).ToList();
string content = "";
bool flagEnable = false;
foreach (string line in lines) {
if (line.Contains("</" + tag + ">"))
flagEnable = false;
if (flagEnable == true)
content += line + Environment.NewLine;
if (line.Contains("<" + tag))
flagEnable = true;
}
return content;
}
}
最佳答案
简答题
制作edmx
设计器显示图表,您可以使用以下任一选项:
拥有<Designers></Designers>
在 edmx
中标记文件。
拥有.edmx.designer
包含以下内容的文件和 .edmx
的子文件文件:
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
<edmx:Designer>
<edmx:Diagrams>
</edmx:Diagrams>
</edmx:Designer>
</edmx:Edmx>
长答案
EdmGen.exe
不会生成 edmx
为您,但它会生成创建 edmx
所需的所有数据自己归档。您可以通过混合这些 csdl
来简单地创建 edmx 文件, ssdl
和 msl
.
关于图表文件,你应该知道edmx.diagram
文件不是必需的。当您创建 edmx
文件,空 <Diagrams></Diagrams>
标记,第一次在设计器中打开 edmx 文件时,Visual Studio 将为您创建标记的内容。然后,如果出于任何原因您希望将 ot 放在单独的文件中,您只需右键单击 edmx 的设计图面并选择 Move Diagrams to Separate File
。 .
您可以按照以下步骤创建 edmx
自己手动(或通过代码)归档:
1- 运行 EdmGen
"%windir%\Microsoft.NET\Framework\v4.0.30319\edmgen.exe" /mode:fullgeneration /c:"Data Source=SERVERNAME; Initial Catalog=DATABASENAME;Integrated Security=SSPI" /project:PROJECT /entitycontainer:CONTAINER /namespace:NAMESPACE /language:CSharp /targetversion:4.5
2- 创建一个包含以下内容的 edmx 文件。
请注意 edmx
我在这篇文章中使用的内容基于 /targetversion:4.5
开关。
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
<!-- EF Runtime content -->
<edmx:Runtime>
<!-- SSDL content -->
<edmx:StorageModels>
$SSDL$
</edmx:StorageModels>
<!-- CSDL content -->
<edmx:ConceptualModels>
$CSDL$
</edmx:ConceptualModels>
<!-- C-S mapping content -->
<edmx:Mappings>
$MSL$
</edmx:Mappings>
</edmx:Runtime>
<!-- EF Designer content (DO NOT EDIT MANUALLY BELOW HERE) -->
<Designer xmlns="http://schemas.microsoft.com/ado/2009/11/edmx">
<Connection>
<DesignerInfoPropertySet>
<DesignerProperty Name="MetadataArtifactProcessing" Value="EmbedInOutputAssembly" />
</DesignerInfoPropertySet>
</Connection>
<Options>
<DesignerInfoPropertySet>
<DesignerProperty Name="ValidateOnBuild" Value="true" />
<DesignerProperty Name="EnablePluralization" Value="true" />
<DesignerProperty Name="IncludeForeignKeysInModel" Value="true" />
<DesignerProperty Name="UseLegacyProvider" Value="false" />
<DesignerProperty Name="CodeGenerationStrategy" Value="None" />
</DesignerInfoPropertySet>
</Options>
<!-- Diagram content (shape and connector positions) -->
<Diagrams></Diagrams>
</Designer>
</edmx:Edmx>
3- 将您在 edmx 中的占位符替换为以下文件的内容(不带 <?xml version="1.0" encoding="utf-8"?>
):
$SSDL$
应替换为 ssdl
的内容文件。$CSDL$
应替换为 csdl
的内容文件。$MSL$
应替换为 msl
的内容文件。注意
.edmx.designer
是可选的,有一个 <Diagrams></Diagrams>
就足够了在 edmx
中标记就像我上面分享的那样,当你第一次打开 Visual Studio 时,图表会自动为你创建。同样出于任何原因,如果您想将图表放在一个单独的文件中,您可以简单地创建一个空图表文件,该文件将在您第一次打开 edmx 时由 VS 填充:
<?xml version="1.0" encoding="utf-8"?>
<edmx:Edmx Version="3.0" xmlns:edmx="http://schemas.microsoft.com/ado/2009/11/edmx">
<edmx:Designer>
<edmx:Diagrams>
</edmx:Diagrams>
</edmx:Designer>
</edmx:Edmx>
关于c# - 如何使用 edmgen.exe 生成 .edmx.diagram 文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48354180/
我在一些帮助文件和 src 文档中看到了很多这样的图表 他们叫什么?是否有任何其他(出于相同目的)已知图表? 图片来源:http://www.sqlite.org/images/syntax/inse
我正在设计一个锻炼后续计划。我有以下关系图,我想用它创建一个类图。 在这种情况下,我应该创建一个关联表,如下所示: 解释一下这种关系:一 block 肌肉可能会被许多不同的练习所针对,而一次练习可能会
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用资料或专业知识的支持,但这个问题可能会引发辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the
我的作业规定了以下标准: For this view you may use a truncated version of your Design Class Diagram (DCD) includ
我的作业规定了以下标准: For this view you may use a truncated version of your Design Class Diagram (DCD) includ
我正在尝试使用基于单元格值的图像填充堆叠的 excel 图表。我可以为第一列做到这一点,但不能为第二列。 这是一个例子。我想用基于 B 列中的值的图像填充橙色区域 这是我如何用图像填充第一列的 VBA
如何在流程图中交替顺序? 想象一下下面的流程图, 必须先检查“Want Fries”,然后再检查“Want Drink”。现在,我想获得一个端点,可以按任何顺序检查这两个条件。它的简明流程图应该是怎样
我正在设计一个数据流图,我不知道是否必须表示我的应用程序在开始时加载的外部文件(它是自动的,没有实体交互)。我将其表示为数据存储,对吗?我想数据存储不应该是静态文件。 最佳答案 文件是数据存储,就像数
关闭。这个问题不满足Stack Overflow guidelines .它目前不接受答案。 想改善这个问题吗?更新问题,使其成为 on-topic对于堆栈溢出。 6年前关闭。 Improve thi
如何在Dia中创建带有文本(垂直位置)的垂直箭头?创建没有文本的箭头显然很简单,但是我不知道如何使文本垂直。 或者,如果您可以为图表推荐其他Linux软件,那么我也将不胜感激。我最终需要生成eps输出
Closed. This question does not meet Stack Overflow guidelines。它当前不接受答案。 想要改善这个问题吗?更新问题,以便将其作为on-topi
我想在图表中编辑我的 ecore 模型。我创建了一个 ecorediag但我找不到任何方法在其中添加现有类。它工作的唯一方法是我使用“使用现有域模型对象初始化图表”。但是,如果我创建新类或不小心删除了
我开发了一个简单的2D益智游戏(如“珠宝迷阵”)。它可以以两种模式播放-“广告系列”和“快速游戏”。 “广告系列”模式有多个级别。退出事件级别时,玩家可以保存自己的进度。 “快速游戏”模式只会生成随机
就目前而言,这个问题不适合我们的问答形式。我们希望答案得到事实、引用或专业知识的支持,但这个问题可能会引起辩论、争论、投票或扩展讨论。如果您觉得这个问题可以改进并可能重新打开,visit the he
下图是用什么图表工具生成的?谢谢。 source link 最佳答案 如上所述here在 nginx.com 上,它与 OmniGraffle 一起使用。由于您的源链接的作者也在 NGinx 中工作,
我想生成与此类似的图表,但我不知道要寻找什么。 最佳答案 这是一个 Syntax Diagram . Syntax diagrams (or railroad diagrams) are a way
我正在尝试构建序列图,我想在我的图中表示循环(如下图所示)我如何在 Dia 中做到这一点?任何帮助表示赞赏。 最佳答案 我不知道与Dia相关的答案,但我建议你使用DRAKON,特别是DRAKON Ed
关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。 想改进这个问题?更新问题,使其成为 on-topic对于堆栈溢出。 7年前关闭。 Improve this
我正在使用Mermaid CLI生成流程图(http://knsv.github.io/mermaid/flowchart.html)。它的效果很好,但是我不知道如何在节点内获取特殊字符(百分号,括号
任何有经验的人 Quick Sequence Diagram Editor ?即时显示+文本源代码+Java实现的组合对我来说很有吸引力,但我不太明白如何让语法做我想要的,文档也不是很清楚。这是一个人
我是一名优秀的程序员,十分优秀!