public void GenerateCode(FileProjectItem item, CustomToolContext context) { LanguageOption languageToGenerateCode = LanguageOption.GenerateCSharpCode; if (item.Project.Language != "C#") { languageToGenerateCode = LanguageOption.GenerateVBCode; } XDocument edmxDocument = XDocument.Load(item.FileName); XElement conceptualModelsElement = EDMXIO.ReadSection(edmxDocument, EDMXIO.EDMXSection.CSDL); if (conceptualModelsElement == null) { throw new ArgumentException("Input file is not a valid EDMX file."); } XDocument csdlDocument = new XDocument(new XDeclaration("1.0", "utf-8", null), conceptualModelsElement.Element(XName.Get("Schema", csdlNamespace.NamespaceName))); string tempFileName = IO.GetTempFilenameWithExtension("csdl"); csdlDocument.Save(tempFileName); string outputFileName = context.GetOutputFileName(item, "Designer"); EntityCodeGenerator entityCodeGenerator = new EntityCodeGenerator(languageToGenerateCode); IList <EdmSchemaError> edmSchemaErrors = entityCodeGenerator.GenerateCode(tempFileName, outputFileName); File.Delete(tempFileName); context.EnsureOutputFileIsInProject(item, outputFileName); }
public void GenerateCode(FileProjectItem item, CustomToolContext context) { XElement schema = GetModelSchema(item); XDocument csdlDocument = CreateCsdlDocument(schema); string tempFileName = IO.GetTempFilenameWithExtension("csdl"); csdlDocument.Save(tempFileName); LanguageOption languageToGenerateCode = GetLanguageOption(item); string outputFileName = context.GetOutputFileName(item, "Designer"); EntityCodeGenerator entityCodeGenerator = new EntityCodeGenerator(languageToGenerateCode); AddNamespaceMapping(entityCodeGenerator, schema, context.OutputNamespace); IList <EdmSchemaError> edmSchemaErrors = entityCodeGenerator.GenerateCode(tempFileName, outputFileName); File.Delete(tempFileName); context.EnsureOutputFileIsInProject(item, outputFileName); }
private void GenerateCode() { CSDLTemplate csdl = new CSDLTemplate(_model); XDocument document = XDocument.Parse(csdl.FileContent); XElement c = EdmGen2.GetCsdlFromEdmx(document, EntityFrameworkVersions.Version2); // generate code StringWriter sw = new StringWriter(); EntityCodeGenerator codeGen = new EntityCodeGenerator(LanguageOption.GenerateCSharpCode); IList <EdmSchemaError> errors = codeGen.GenerateCode(c.CreateReader(), sw); if (errors.Count != 0) { //throw new Exception("The Entity Framework generation failed. Please email [email protected]."); StringBuilder sb = new StringBuilder(); foreach (EdmSchemaError error in errors) { sb.AppendFormat("error.Column:{0} error.ErrorCode:{1} error.Line:{2} error.Message:{3} error.SchemaLocation:{4} error.SchemaName:{5} error.Severity:{6} error.StackTrace: {7}", error.Column, error.ErrorCode, error.Line, error.Message, error.SchemaLocation, error.SchemaName, error.Severity, error.StackTrace).AppendLine(); } System.Diagnostics.Debug.WriteLine(sb.ToString()); } }
private static void CodeGen(FileInfo edmxFile, LanguageOption languageOption) { XDocument xdoc = XDocument.Load(edmxFile.FullName); XElement c = GetCsdlFromEdmx(xdoc); Version v = _namespaceManager.GetVersionFromEDMXDocument(xdoc); StringWriter sw = new StringWriter(); IList <EdmSchemaError> errors = null; // // code-gen uses different classes for V1 and V2 of the EF // if (v == EntityFrameworkVersions.Version1) { // generate code EntityClassGenerator codeGen = new EntityClassGenerator(languageOption); errors = codeGen.GenerateCode(c.CreateReader(), sw); } else if (v == EntityFrameworkVersions.Version2) { EntityCodeGenerator codeGen = new EntityCodeGenerator(languageOption); errors = codeGen.GenerateCode(c.CreateReader(), sw); } else if (v == EntityFrameworkVersions.Version3) { EntityCodeGenerator codeGen = new EntityCodeGenerator(languageOption); errors = codeGen.GenerateCode(c.CreateReader(), sw, EntityFrameworkVersions.Version3); } // write out code-file string outputFileName = GetFileNameWithNewExtension(edmxFile, GetFileExtensionForLanguageOption(languageOption)); File.WriteAllText(outputFileName, sw.ToString()); // output errors WriteErrors(errors); }
public void cc() { String connectionString = "Data Source=.;Initial Catalog=MyDB;User Id=sa;Password=sa;"; String dataBaseType = "SQLServer"; Draco.DB.QuickDataBase.Configuration.ConnectionInfo connInfo = new ConnectionInfo(connectionString, dataBaseType); Draco.DB.QuickDataBase.IDataBaseContext ctx = new Draco.DB.QuickDataBase.DataBaseContext(connInfo); Draco.DB.QuickDataBase.IDataBaseHandler handler = ctx.Handler; //开始数据库操作 //...... //以IDataBaseHandler对象获取Draco.DB.QuickDataBase.IDataBaseContext对象 Draco.DB.QuickDataBase.Adapter.IDataBaseAdapter adp = handler.DbAdapter; //创建单一参数对象 System.Data.IDataParameter para = adp.CreateParameter("@Para", "abc"); //快速创建参数化对象数组 Draco.DB.QuickDataBase.IDataParameters parameters = new Draco.DB.QuickDataBase.Common.DataParameters(adp); parameters.AddParameterValue("FiledNameX", 1); parameters.AddParameterValue("FiledNameY", "abc"); parameters.AddParameterValue("FiledNameZ", DateTime.Now); System.Data.IDataParameter[] _Parameters = parameters.Parameters; String SQL = "select * from tab where field1=? and (field2=? or field3>?)"; Draco.DB.QuickDataBase.ParameterizedSQL param = handler.DbAdapter.AdaptSQLAnonymousParams(SQL, 100, "ABC", DateTime.Now); DataSet ds = handler.ExecuteQuery(param.SQL, param.Parameters); Draco.DB.QuickDataBase.ISQLGenerator SQLGen = adp.GetSQLGenerator(); Draco.DB.QuickDataBase.IDataBaseSchemaHandler schemaHandler = adp.GetSchemaHandler(handler); String timeSQL = adp.NamedSQLs["Test.TimeSQL"]; Object obj = handler.ExecuteScalar(timeSQL); // ctx.Handler.StartTransaction(); ctx.Handler.CommitTransaction(); handler.StartTransaction(); handler.CommitTransaction(); using (Draco.DB.QuickDataBase.Common.DbTransactionScope scope = new DbTransactionScope(handler)) { try { //.... scope.Complete();// } catch { } } Draco.DB.ORM.IORMContext octx = new ORMContext(connInfo); Draco.DB.ORM.Schema.Vendor.ISchemaLoader Loader = octx.SchemaLoader; //获取加载器 Draco.DB.ORM.Schema.Dbml.Database dataBase = Loader.Load("Name", "Draco.DataTblCtrlLayer", null); //加载数据库构架 Draco.DB.ORM.Generator.EntityCodeGenerator Generator = new EntityCodeGenerator(dataBase); //创建代码生成器 string Code = Generator.GenerateCode("MyEntity", "GUID", true); //创建C#代码 System.IO.File.WriteAllText("D:\\MyEntity.cs", Code, System.Text.Encoding.UTF8); //输出C#代码到文件 }