我正在尝试在两个表之间创建数据库关系。
我有免费的兑换码。但是一个用户只有一个redem代码。
我创建了两个实体:
public class UserProfile
{
[Key]
[ForeignKey("User")]
public int Id { get; set; }
//... other fields
public virtual RedemptionCode RedemptionCode { get; set; }
public virtual User User { get; set; }
}
public class RedemptionCode
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
public int Id { get; set; }
[ForeignKey("UserProfile")]
public int? UserProfileId { get; set; }
public virtual UserProfile UserProfile { get; set; }
[Required]
public string Code { get; set; }
}
但是当我添加迁移时,我遇到以下错误:
在模型生成期间检测到一个或多个验证错误:
RedemptionCode_UserProfile_Source ::多重性在关系'RedemptionCode_UserProfile'中的角色'RedemptionCode_UserProfile_Source'中无效。由于Dependent Role属性不是关键属性,因此Dependent Role的多重性的上限必须为'*'。
我真正想要的是什么?我想在db中存储免费的redem代码,并将其中一个链接到我系统中的新用户。
答案 0 :(得分:0)
以下是string c = "%";
c = comboBox1.Text;
int a;
a = Convert.ToInt32(textBox1.Text);
a = int.Parse(textBox1.Text);
SqlCommand cmd = new SqlCommand("select * from Person where ( PER_ID = '" + a + "' and GOV_NAME_AR = '" + c + "') ", con);
cmd.CommandTimeout = 600;
con.Open();
SqlDataReader rdr = cmd.ExecuteReader();
if (rdr.HasRows)
{
// MessageBox.Show("Successfully found Data");
// SqlDataReader DR = cmd.ExecuteReader();
BindingSource source = new BindingSource();
dataGridView1.DataSource = source;
}
else
{
MessageBox.Show("data not found");
}
con.Close();
类
UserProfile
您必须将public class RedemptionCode
{
[DatabaseGenerated(DatabaseGeneratedOption.Identity)]
[Key,ForeignKey("UserProfile")]
public int Id { get; set; }
public int? UserProfileId { get; set; }
[ForeignKey("UserProfile")]
public virtual UserProfile UserProfile { get; set; }
[Required]
public string Code { get; set; }
}
从属性ForeignKey
移动到导航属性UserProfileId
,并通过添加UserProfile
属性来指示UserProfile是关系中的主体ForeignKey
类
Id