MVC - 为模型属性使用自定义类

时间:2016-10-11 22:16:48

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

我想先说一下,我是一名Web开发人员,在学习ASP.NET C#之前先用C ++开始。

所以我在我的网络应用程序中有一个模型,它有一个属性,我想使用自定义类作为属性的数据类型。我不确定将自定义类存储在Visual Studio的文件夹结构中的位置。另外,我不确定我是否正确设置了这个。

自定义类

public class ClassName
{
    public int value1;
    public int value2;
}

public ClassName(int v1)
{
    value1 = v1;
    value2 = v2
}

模型

public class Model
{
    public int ID { get; set; }
    public string Name { get; set; }
    public List<ClassName> ClassNames {get; set;}
}

我不想在数据库上使用自定义类。我一直在Visual Studio中使用迁移执行Code First,并一直尝试将自定义类推送到数据库中。关于我可能设置错误的任何想法或我需要做什么才能得到我想要的东西。

2 个答案:

答案 0 :(得分:0)

至于文件夹结构 - 查看Asp.Net的模型视图控制器模式,非常好的模式。将模型存储在名为&#39; models&#39;的文件夹中,控制器下的控制器&#39;观看次数下的观点&#39;等

至于使用&#39; classname&#39;在你的表中,我不太确定你是否可以使用行的类。不确定数据库表将如何容纳它。

也许您需要为classname创建另一个表,然后使用外键将这些记录引回到您的第一个表?

答案 1 :(得分:0)

如果您不想在数据库中使用public class Model,请使用VS Package Manager控制台执行add-migration IgnoreChanges

这将创建名为IgnoreChanges的迁移类,然后在public override void Up()public override void Down()函数中删除您不想要的任何代码。

像这样:

public partial class IgnoreChanges : DbMigration
{
    public override void Up()
    {
       // No code here
    }

    public override void Down()
    {
       // No code here
    }
}

执行update-database和volia ...不会向数据库添加任何更改。

你基本上是在愚弄迁移,认为它已经将你的模型运行到数据库中。

迁移会在您执行add-migration时获取数据库的快照,因此通过删除您不希望发布到数据库的代码,迁移仍会识别您的更改已生成,甚至虽然您已从public override void Up()public override void Down()函数

中删除了代码

希望这是有道理的