【问题标题】:asp.net mvc - how to save a model with enum fields?asp.net mvc - 如何使用枚举字段保存模型?
【发布时间】:2015-03-09 05:19:32
【问题描述】:

我的模型定义如下:

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; }
    }
}

UserLog表中Type字段的基本类型是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;
     }
}

和Login Repository代码如下:

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

问题是信息正确存储在UserLog表中,但Type字段仍然Null

【问题讨论】:

  • 你在使用实体框架吗? LINQ到SQL?还有什么?什么版本?你在使用 Sql Server 吗? MySQL? Add() 是做什么的?我们看不到您的存储库是如何运行的……您没有包含该代码。
  • 如果您使用的是最新版本的 EF,听起来这是您的问题:stackoverflow.com/questions/13318782/… 枚举类型默认为 int 类型...
  • 我正在使用EF,问题已解决,谢谢。

标签: asp.net asp.net-mvc enums repository-pattern


【解决方案1】:

我用过这个解决方案:

public int Type { get; set; }

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2013-12-01
    • 2021-12-22
    • 2011-08-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多