为什么数据库中的Id和使用MongoDb.Driver

时间:2017-05-30 14:09:51

标签: c# mongodb orm mongodb.driver

我一直试图坚持一个名为User的具体类,它继承了Entity。我无法理解为什么Id与数据库不同并调试代码。我正在使用C#和MongoDb.Driver。

public abstract class Entity : IEntity
{
    public Guid Id { get; protected set; }
    public string Description { get; protected set; }
}

public class User : Entity
{
    public string Issuer { get; protected set; }
    public string Subject { get; protected set; }
    public IEnumerable<string> Roles { get; protected set; }

    public User(string issuer, string subject, IEnumerable<string> roles = null)
    {
        Issuer = issuer;
        Subject = subject;
        Roles = roles;
    }
}

作为参考,这是我的Repository及其Save方法。

public class UserRepository
{
    private readonly string _connectionString;
    private readonly string _databaseName;

    protected string CollectionName => "user";

    protected RepositoryAbstract(IMongoStorageConnection mongoStorageConnection)
    {
        _connectionString = mongoStorageConnection.ConnectionString;
        _databaseName = mongoStorageConnection.DatabaseName;
    }

    protected IMongoQueryable<User> MongoCollectionQuery => MongoCollection.AsQueryable();

    protected IMongoCollection<User> MongoCollection => MongoDatabase.GetCollection<User>(CollectionName);

    private IMongoDatabase MongoDatabase => MongoClient.GetDatabase(_databaseName);

    private MongoClient MongoClient
    {
        get
        {
            MongoUrl mongoUrl = new MongoUrl(_connectionString);

            MongoClientSettings settings = MongoClientSettings.FromUrl(mongoUrl);
            settings.SslSettings = new SslSettings
            {
                EnabledSslProtocols = SslProtocols.Tls12
            };

            MongoClient mongoClient = new MongoClient(settings);
            return mongoClient;
        }
    }

    public async Task SaveAsync(User entity) => await MongoCollection.InsertOneAsync(entity);
}

当我尝试将用户保存到数据库时,存储在数据库中的_id字段与我的代码中显示的ID不同。

View from Database

View from Code

任何人都可以解释原因吗?

0 个答案:

没有答案