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);
        }
Example #3
0
        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());
            }
        }
Example #4
0
        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);
        }
Example #5
0
        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#代码到文件
        }