如何在EF代码中实现这种关系模型?

时间:2016-01-29 18:44:09

标签: c# entity-framework

我真的想在我的项目中使用EF,但如果我想在数据库中实现这一点,我在查找如何使用代码优先方法时遇到了一些麻烦:

    import move from '../../libraries/fsMove.js';

    export function create(req, res) {
      var file = req.files.file;
      console.log(file.name);
      console.log(file.type);
      console.log(file.path);
      console.log(__dirname);
      move(file.path, __dirname + '/../../uploads/worlds/' + file.originalFilename, function(err){
        if (err) {
          console.log(err);
          handleError(res)(err);
          return;
        }
        World.createAsync(req.body)
          .then(responseWithResult(res, 201))
          .catch(handleError(res));
      });
    }

    // fsMove.js
    // http://stackoverflow.com/questions/8579055/how-i-move-files-on-node-js/29105404#29105404
    var fs = require('fs');

    module.exports = function move (oldPath, newPath, callback) {
      fs.rename(oldPath, newPath, function (err) {
        if (err) {
          if (err.code === 'EXDEV') {
            copy();
          } else {
            callback(err);
          }
          return;
        }
        callback();
      });

      function copy () {
        var readStream = fs.createReadStream(oldPath);
        var writeStream = fs.createWriteStream(newPath);

        readStream.on('error', callback);
        writeStream.on('error', callback);
        readStream.on('close', function () {

          fs.unlink(oldPath, callback);
        });

        readStream.pipe(writeStream);

      }
    }; 

有人可以帮我解决我应该如何使用代码优先EF?

我不知道如何创建Posts ============================================================================ Id :int | Title :string | Author :string | Date : datetime| Content :string ============================================================================ Tags ============= Name :string ============= PostTags =============================== Post_Id :int | Tag_Name :string =============================== ReadBy =============================== Post_Id :int | Reader_Name :string =============================== 表,因为它只有原始类型,我不知道如何为TagsPostTags定义那些M2M映射。

我知道关系设计非常简单,因为它主要使用原始数据类型,而在其他情况下我会手动制作我的DAL,但我想先使用EF代码,因为我知道我会从中受益在将来向应用添加更多功能时。

非常感谢您的帮助!

1 个答案:

答案 0 :(得分:4)

这将是我解决问题的方法:

public class Post
{
    public int Id { get; set; }
    public string Title { get; set; }
    public string Author { get; set; }
    public DateTime Date { get; set; }
    public string Content { get; set; }
    public virtual List<Tag> Tags { get; set; }
    public virtual List<Reader> Readers { get; set; }
}

public class Tag
{
    public int Id { get; set; }
    public string Name { get; set; }
    public virtual List<Post> Posts { get; set; }
}

public class Reader
{
    public int Id { get; set; }
    public int Name { get; set; }
    public virtual List<Post> Posts { get; set; }
}

最终结果: enter image description here