asp.net mvc核心1.0.1与ef核心1.0.1无法检索保存的一对多关系

时间:2016-10-25 12:31:15

标签: asp.net-mvc entity-framework asp.net-mvc-4 asp.net-mvc-5

我刚开始研究asp mvc核心。根据MS poco数据库保持不变。

现在,下面的所有代码都在asp mvc 4上完美运行,并且所有内容都保存在数据库中;由sqlserverexplorer在visual studio 2015 update 3上验证。

我可以检索数据,但是一段时间后或者在我重新启动应用程序并尝试检索属性后,它会显示为null,尽管我可以查看数据库中的数据。

尝试过的事情

  1. 重新安装vs
  2. 重新安装mvc core
  3. Viewed the examples on the official documentation/tutorial site 他们使用ICollection而不是List,但他们也说你可以使用它们。
  4. builder.Entity()。HasMany(u => u.storymode).WithOne(c => c.user); **** 在数据库上下文OnModelCreating方法中。
  5. ***这一行使得它保持关系直到应用程序重新启动,因此它只保存了应用程序启动后保存的关系,并在重新启动后丢失了。

    目前的行为是它保存数据但未被检索。

    加分 我通过下面定义的函数保存数据,该函数属于一个类,它按照启动类的ConfigureServices方法中的asp.net mvc核心指南进行注入。

    我的poco课程是

    public class modelsall
    {
        public virtual int modelsallId { get; set; }
    
        [Required]
        public virtual string username { get; set; }
    
        [Required]
        [DisplayName("Email")]
        [DataType(DataType.EmailAddress)]
        public virtual string email { get; set; }
    
        [DataType(DataType.Text)]
        public virtual string title { get; set; }
        [DataType(DataType.Text)]
        public virtual string extra { get; set; }
    
        [Required]
        [DataType(DataType.DateTime)]
        public virtual DateTime startdate { get; set; }
    
        public virtual string imageblob { get; set; }
    
        public virtual List<comments> comments { get; set; }
    
        public virtual List<storyfacequotes> faceq { get; set; }
    
        //Tried adding this in desperation
        //[ForeignKey("storypages")]
        //public virtual int storyId { get; set; }
        public virtual List<story> pages { get; set; }
    
        //Tried adding this after a blogpost said it might help
        public virtual ApplicationUser user { get; set; }
    
        public virtual whatisit typ { get; set; }
    
    
    }
    

    创建和保存的方法

    public async Task<bool> AddMainStory(string email, modelsall modelsall)
        {
            ApplicationUser user = await GetUser(email);
    
            if (user == null)
            {
                return false;
            }
            modelsall.email = user.Email;
            modelsall.user = user;
            _context.models.Add(modelsall);
            await _context.SaveChangesAsync();
            if (user.mode == null)
            {
                user.mode = new List<modelsall>();
            }
            user.mode.Add(modelsall);
            await _context.SaveChangesAsync();
            return true;
        }
    
    ApplicationUser中定义的

    属性

    public class ApplicationUser : IdentityUser
    {
        public virtual List<modelsall> mode { get; set; }
    }
    

    PS:我找不到asp.net mvc核心的标签,但根据MS,mvc5被认为是mvc核心。

1 个答案:

答案 0 :(得分:0)

经过大量研究而没有第一次正确查看文档,

你需要这个来建立关系

builder.Entity().HasMany(u => u.storymode).WithOne(c => c.user);
数据库上下文OnModelCreating方法中的

****。

但如果应用程序重新启动则整个过程会重置,因此不是理想的解决方案。

现在你可以每次搜索,对小应用程序没有多大影响,或者使用asp 5和ef6。

Here is a list of features not included in ef core as of now.