已有数据库使用Entity Framework 6.0 Code First

一、创建数据库

SQL Server Management Studio创建数据库 BloggingDatabase

在数据库BloggingDatabase创建Blogs表和 Posts

CREATE TABLE [dbo].[Blogs] (
[BlogId] INT IDENTITY (1, 1) NOT NULL,
[Name] NVARCHAR (50) NULL,
[Url] NVARCHAR (250) NULL,
CONSTRAINT [PK_dbo.Blogs] PRIMARY KEY CLUSTERED ([BlogId] ASC)
);

CREATE TABLE [dbo].[Posts] (
[PostId] INT IDENTITY (1, 1) NOT NULL,
[Title] NVARCHAR (50) NULL,
[Content] NTEXT NULL,
[BlogId] INT NOT NULL,
CONSTRAINT [PK_dbo.Posts] PRIMARY KEY CLUSTERED ([PostId] ASC),
CONSTRAINT [FK_dbo.Posts_dbo.Blogs_BlogId] FOREIGN KEY ([BlogId]) REFERENCES [dbo].[Blogs] ([BlogId]) ON
DELETE CASCADE
);

INSERT INTO [dbo].[Blogs] ([Name],[Url])
VALUES ('CSDN 上传资源审核慢', 'https://csdn.s2.udesk.cn/im_client/')
INSERT INTO [dbo].[Blogs] ([Name],[Url])
VALUES ('CSDN 网址是什么', 'https://www.csdn.net/')

二、新建实体数据模型

使用 Visual Studio 的 AOD.NET 实体框架工具来生成一些映射到数据库的代码。

选着来自数据库的 Code First 模式。

点击新建连接按钮创建数据库的连接,填写服务器地址、用户名和密码,接着选着BloggingDatabase数据库,然后点击下一步按钮。

点击箭头按钮,选着Blogs 和 Posts 表,点击完成按钮,此时节点名称为Bloggingcontext数据库的连接字串会被自动添加到App.config 文件中。

App.config 文件新增的内容。

  <connectionStrings>
    <add name="Bloggingcontext" connectionString="data source=服务器地址;initial catalog=BloggingDatabase;user id=用户名;password=密码;MultipleActiveResultSets=True;App=EntityFramework" providerName="System.Data.SqlClient" />
  </connectionStrings>

  • 同时还添加了继承 DbContext 的Bloggingcontext 类,该类包含了两个带有 virtual 修饰的DbSet<Blogs> 类型的属性,这些属性分别对应数据库 BloggingDatabaseBlogsPosts 表。

  • public Bloggingcontext() : base("name=Bloggingcontext") 通过数据库连接约定读取 App.config 中节点名称为 Bloggingcontext 连接数据库字符串。

派生上下文Bloggingcontext

    public partial class Bloggingcontext : DbContext
    {
        public Bloggingcontext()
            : base("name=Bloggingcontext")
        {
        }

        public virtual DbSet<Blogs> Blogs { get; set; }
        public virtual DbSet<Posts> Posts { get; set; }

        protected override void OnModelCreating(DbModelBuilder modelBuilder)
        {
        }
    }

模板类Blogs 和 Posts

此外,Blogs 和 Posts 类也添加到项目中,Blogs 类的 BlogId 字段添加了“[Key]”数据注释来指定BloggingDatabase 表 Blogs 的主键。Name 属性的 “[StringLength(250)]”指定表字段 Name 支持最大长度。Posts 导航属性的数据注释是自动生成的标识符。

Blogs

    public partial class Blogs
    {
        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2214:DoNotCallOverridableMethodsInConstructors")]
        public Blogs()
        {
            Posts = new HashSet<Posts>();
        }

        [Key]
        public int BlogId { get; set; }

        [StringLength(50)]
        public string Name { get; set; }

        [StringLength(250)]
        public string Url { get; set; }

        [System.Diagnostics.CodeAnalysis.SuppressMessage("Microsoft.Usage", "CA2227:CollectionPropertiesShouldBeReadOnly")]
        public virtual ICollection<Posts> Posts { get; set; }
    }

Posts

    public partial class Posts
    {
        [Key]
        public int PostId { get; set; }

        [StringLength(50)]
        public string Title { get; set; }

        [Column(TypeName = "ntext")]
        public string Content { get; set; }

        public int BlogId { get; set; }

        public virtual Blogs Blogs { get; set; }
    }

三、读取和写入数据

实现Program.cs 文件的 Main 方法中实现向Blog 表添加一条记录,并且使用LINQ 查询从Blog 表查找所有记录,最后遍历输出这些记录。

    internal class Program
    {
        static void Main(string[] args)
        {
            using (var db = new Bloggingcontext())
            {
                // 创建和保存一个Blog实例
                Console.Write("输入 Blog 的名称: ");
                var name = Console.ReadLine();
                var blog = new Blogs { Name = name };
                db.Blogs.Add(blog);
                db.SaveChanges();

                // 遍历 Blog 所有记录
                var query = from b in db.Blogs
                            orderby b.Name
                            select b;
                foreach (var item in query)
                {
                    Console.WriteLine(item.Name);
                }

                Console.ReadKey();
            }
        }
    }

四、迁移

迁移功能能够以递增方式更新数据库架构,使其与应用程序的数据模型保持同步,同时保留数据库中的现有数据。

详细步骤可以参考《Entity Framework 6.0 Code First》的迁移章节。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

「已注销」

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值