【问题标题】:Assigning foreign key to my primary key将外键分配给我的主键
【发布时间】:2015-03-14 05:57:52
【问题描述】:

我只是 asp.net 的学习者,我目前正在学习 mvc5,因为我的系统中安装了 vs2013。

我的问题是这样的:

我想编写一个简单的应用程序来加快我在 asp.net 编程方面的学习。作为一个新的 asp.net 和 c# 程序员,我目前正在编写的代码对我来说非常有问题,因为我无法向应用程序添加配置文件。

我打开了一个新的 asp.net mvc 应用程序,并自动为我创建了一些文件夹。现在你会同意我的观点,注册新应用只需要用户名、电子邮件和密码。我想将个人资料页面添加到 Microsoft 默认创建的同一数据库中,但我不知道如何添加它。我在模型文件夹中创建了一个配置文件类文件,但我什至不知道如何设置外键以防我想使用其他类中的某些特定实体...

我的代码如下所示...请问如何将其添加到默认数据库并将键分配为外键?

using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;

namespace WebCHECKING.Models
{
    public class Profile
    {
        public int ProfileID { get; set; }

        public string Firstname { get; set; }

        public string Secondname { get; set; }
        public string Email { get; set; }

        public string Phone { get; set; }

        public string Picture { get; set; }

        public string Facebook { get; set; }

        public string Description { get; set; }

        public DateTime Datejoined { get; set; }
    }
}

【问题讨论】:

  • 代码显示了一个具有可能 PK ProfileID 的单一实体类。您想引用哪个实体类作为外键?
  • 别生气,我只是在学习asp.net。 Visual Studio 在创建新的 Web 应用程序后为您构建的默认数据库,您如何创建另一个模型以与默认数据库关联?请帮我。我读了很多书,但都没有帮助

标签: c# asp.net-mvc-5


【解决方案1】:

与创建新类来存储配置文件信息相反,您可以使用这些新字段扩展现有的 AplicationUser 类。看看这个article。这篇文章实际上是在你的项目中引用的(打开 IdentityModels.cs)。如果您采用这种方法,您可能希望将附加字段设为可选,以便用户在注册时不必填写所有内容。

如果您打算为配置文件数据使用单独的类,请将 using Microsoft.AspNet.Identity; 添加到您的模型中并引用 ApplicationUser,例如:public virtual ApplicationUser UserPerson {get; set; }。查看此 SO question,了解有关在控制器中设置字段值的详细信息。

-编辑-

抱歉,没有看到您关于数据库的第一个问题。如果您使用的是实体框架,您可以为此模型添加一个控制器并选择带有视图的 MVC 5 控制器,使用实体框架选项。这样,EF 将为您添加一个数据库上下文,并为一堆视图和控制器操作搭建基架。如果您不想像这样构建所有东西,可以打开 IdentityModels.cs 并在 public static ApplicationDbContext Create() 方法下,添加像 public System.Data.Entity.DbSet<WebCHECKING.Models.Profile> Profiles {get; set; } 这样的 DbSet 语句。您还必须运行数据库迁移才能创建表。

-再编辑一次-

如果您需要引用另一个类(ApplicationUser 除外),只需将数据类型替换为类的名称,例如:public profileStuff stuff {get; set; }。 EF 将在您的数据库表中为该类添加一个列,为您在其中引用它的类指定一个 Id。This 系列“入门”视频在这种情况下可能会很有帮助。

【讨论】:

  • 我会尝试然后回复您。谢谢你的时间
  • 刚试过。您的解决方案通过将我的表添加到数据库来解决它。现在我现在需要的是,例如,我有一个friend.cs的模型,我想将这样一个朋友链接到他的个人资料,如果你预览朋友列表然后点击他的名字,他的个人资料详细信息将为您显示。我知道这与 profile.cs 和friend.cs 之间的外键有关,但请你帮我写一个小代码,然后向我解释。互联网总是让我感到困惑。
  • @Switjoseph 抱歉回复晚了,我在露营 :) 无论如何,离开你的评论我猜列表中的“朋友”对应于实际的个人资料记录?在这种情况下,您可能希望创建一个用户列表以存储在您的 profile.cs 类中以存储朋友列表并使用friend.cs 类作为视图模型来显示个人资料详细信息。如果您仍在研究这个问题,您还应该在 SE 上提出另一个问题,以便将来偶然发现这个问题的任何人都可以了解发生了什么
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-05-14
  • 2016-09-28
  • 1970-01-01
相关资源
最近更新 更多