C# 如何将当前用户的用户名保存到其他表中?

C# 如何将当前用户的用户名保存到其他表中?,c#,asp.net-mvc,entity-framework,asp.net-mvc-4,ef-code-first,C#,Asp.net Mvc,Entity Framework,Asp.net Mvc 4,Ef Code First,我正在Asp.Net MVC 4中开发,我有一个UserProfile表,其中包含以下字段: public class UserProfile { [Key] [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)] public int UserId { get; set; } public stri

我正在Asp.Net MVC 4中开发,我有一个UserProfile表,其中包含以下字段:

        public class UserProfile
        {
            [Key]
            [DatabaseGeneratedAttribute(DatabaseGeneratedOption.Identity)]
            public int UserId { get; set; }
            public string UserName { get; set; }
            public string UserType { get; set; } //flag de tipo usuário musico ou ouvinte  
        }
我的应用程序很简单,只需将音乐上传到数据库,每个用户只能上传你的音乐。 在音乐领域,我有以下领域:

    public class Musica
{
    public int MusicaId { get; set; }
    public int GeneroId { get; set; } //GenreID
    public int UserId { get; set; } //Needs to take the username from current user logged in app
    public string Nome { get; set; }
    public string NomeArtista { get; set; }
    public Genero genero { get; set; }
    public decimal Preco { get; set; }
}
这是我在SQL上的表关系:

CREATE TABLE [dbo].[Musicas] (
    [MusicaId]  INT            IDENTITY (1, 1) NOT NULL,
    [GeneroId]  INT             NOT NULL,
    [UserId]  INT               NOT NULL,
    [Nome]      NVARCHAR (MAX)  NOT NULL,
    [Preco]     MONEY           NULL,
    [NomeArtista] NVARCHAR(MAX) NOT NULL,   
    CONSTRAINT [PK_dbo.Musicas] PRIMARY KEY CLUSTERED ([MusicaId] ASC), 
    CONSTRAINT [FK_Musicas_ToTable] FOREIGN KEY ([UserId]) REFERENCES [UserProfile]([UserId])
当用户将在视图中创建您的音乐时,
我想从用户处获取用户名,并在音乐表中输入字段用户名
,我如何才能做到这一点

我认为这很简单,但我不知道如何从用户那里获取用户名并保存在其他表中,有人能帮我吗

string currentUserName = System.Web.HttpContext.Current.User.Identity.Name;
获取有关用户的一些信息

MembershipUser user = Membership.GetUser(currentUserName...);
//    ....
选择性地

MembershipUser user = Membership.GetUser();
string userName = user.UserName;

假设您正在使用成员身份提供程序进行用户管理和表单身份验证。如果您使用的是ad,请使用第一个示例,然后使用ad API通过LDAP查询从active directory中查找关于它们的内容。如果您使用的是声明身份验证,那么请使用第一个示例,然后使用您用于向用户提供声明身份验证的w/e。当然,我会将其放在我的create方法中?在musicControllerHi@Ryios,我正在尝试执行您告诉我的操作,但它不起作用,这是我的创建方法:我可以使用用户名,但当调用db.saveChanges()时,会显示以下错误:
“System.Data.SqlClient.SqlException:无法将值NULL插入表'aspnet-TestTcc2-20140907134144.dbo.Musicas'的'Nome'列中;列不允许空值。插入失败。语句已终止。“
您能帮助我吗?该错误似乎是针对
[Nome]
dbo.Musicas
表中的
列,而不是
UserProfile
表的
Name
。您的网站使用的是哪种身份验证?是否为forms auth?是否在web.config中配置了成员资格提供程序?如果是,则还需要确保用户已登录。如果用户以匿名方式访问网站,请en您无法获取他们的用户名。他们必须先登录。您可以使用HttpContext.Current.user.Identity.IsAuthenticated确定该用户是登录的还是匿名的。如果是匿名的,请禁用需要登录的内容。