顯示具有 Entity Framework 標籤的文章。 顯示所有文章
顯示具有 Entity Framework 標籤的文章。 顯示所有文章

2014年12月16日 星期二

[Code First,Entity Framework6,MySql,MariaDB] max key length is 767 bytes


資料庫底層改用MariaDB,之後出現max key length is 767 bytes的錯誤













參考此篇:

http://stackoverflow.com/questions/24981593/specified-key-was-too-long-max-key-length-is-767-bytes-mysql-error-in-entity-fr


另外出現此錯誤













參考此篇:

http://forums.mysql.com/read.php?38,622151,622151


用裡面中的方法2,將下面這句改放在Globa.asax中 Application_Start()

DbConfiguration.SetConfiguration(new MySql.Data.Entity.MySqlEFConfiguration());

即可正常顯示






2014年12月4日 星期四

[Code First] custom Initializer


建立一個類別繼承  DbContext










在web.config中指定你的連線字串[各版本的連線字串寫法]






1.自訂你的 Initializer 並選擇什麼情況下重建你的資料庫

CreateDatabaseIfNotExists (資料庫不存在時重建)


DropCreateDatabaseWhenModelChanges (改變你的模型時重建)


DropCreateDatabaseAlways (每次都重新建立)


2.覆寫Seed方法,建立資料庫的初始資料














在web.config中加入<context>記錄,指定你的context和 Initializer









更多內容可以參考此篇:

Understanding Database Initializers in Entity Framework Code First




2014年11月24日 星期一

Coding First Data Annotations (Model屬性的相關標註說明)

假設有一個Model的類別
    public class User {
        public int Id { get; set; }
        public string PersonalId { get; set; }
        public string Name { get; set; }
    }

[Key]:索引鍵
        [Key]
        public int Id { get; set; }

[Key,Column(Oerder=n)]複合索引鍵:
        [Key]
        [Column(Order=1)]
        public string PersonalId { get; set; }
        [Key]
        [Column(Order=2)]
        public string Name {get;set;}

[Required]:必要欄位不可為空

        [Required]
        public int Id { get; set; }

[MaxLength(n),ErrorMessage=”your message“,MinLength(n)]:最大和最小值和自訂錯誤訊息
        [MaxLength(2),ErrorMessage=”姓名欄位請輸入2~5個字“,MinLength(5)]
        public string Name { get; set; }   

[NotMapped]:不須建立資料庫的欄位
        [NotMapped]
        string sex = PersonalId.Substring(1, 1)=="1"?"男":"女"; 

[Table][Column]:自訂資料庫表格和欄位名稱
        [Table("MyUser")]
        public class UserModel{
            [Column("Myid",TypeName="ntext")]
            string PersonalId{get;set;}
       }

[Index]:欄位建立搜尋索引EF6.1以後版本才有此功能,預設的索引名稱是IX_
        [Index("MyIndexName")]
        public string Name {get;set;}
       }



需要參考以下兩個組件:
using System.ComponentModel.DataAnnotations; 
using System.ComponentModel.DataAnnotations.Schema; 


熱門文章