2015-01-11 45 views
1

我的模型定義如下:在用戶日誌類型字段asp.net mvc - 如何使用枚舉字段保存模型?

namespace Project.Models 
{ 
    public enum LogType 
    { 
     Login = 0, 
     Login_Fail = 1 
    } 

    [Table("UserLog")] 
    public class UserLog 
    { 
     public long Id { get; set; } 
     public int UserId { get; set; } 
     public DateTime Date { get; set; } 
     public string Des { get; set; } 
     public LogType Type { get; set; } 

     public virtual User User { get; set; } 
    } 
} 

基類型是TINYINT

登錄控制器代碼如下:

[HttpPost] 
public virtual JsonResult Login(UserViewModel model) 
{ 
    if (userRepository.CheckUserLogin(model.UserName, model.Password)) 
    { 
     UserLog log = new UserLog(); 
     log.Date = DateTime.Now; 
     log.Des = ""; 
     log.Type = LogType.Login; 

     userRepository.AddUserLog(model.UserName, log); 
     userRepository.Save(); 

     Session["LoginUser"] = model.UserName; 
    } 
} 

和登錄信息庫的代碼如下:

public void AddUserLog(string username, UserLog log) 
{ 
    User user = GetUserByUserName(username); 
    if (user != null) 
     user.UserLogs.Add(log); 
} 

的問題是,信息被正確地存儲在用戶日誌表,但類型現場仍然

+1

是否使用實體框架? LINQ到SQL?還有別的嗎?什麼版本?你在使用Sql Server嗎? MySQL的? Add()是做什麼的?我們無法看到您的存儲庫如何運行......您沒有包含該代碼。 –

+0

如果您使用的是最新版本的EF,聽起來像這樣是您的問題:http://stackoverflow.com/questions/13318782/tinyintbyte-smallintint16-not-compatible-with-enum-in-ef5枚舉類型是,默認的類型爲int ... –

+0

我正在使用EF,問題已解決,謝謝。 – farzad

回答

0

我用這個解決方案:

public int Type { get; set; } 

[NotMapped] 
public LogType UserLogType 
{ 
    get { return (LogType)Type; } 
    set { Type = (int)value; } 
}