2015-09-10 3 views
2

J'ai une application écrire en C# /. NET, c'est un forum très simple comme site web. Actuellement, j'utilise SqlServer avec EntityFramework CodeMigration comme couche d'accès aux données.Création de modèle/schéma DynamoDB?

J'envisage de migrer toutes mes données à DynamoDB, je l'ai déjà essayer un certain tutoriel et lu quelques documents, mais je suis actuellement coincé avec la création de modèle ...

En utilisant EntityFramework CodeMigration, je créez simplement des Entités C#, puis utilisez l'échafaudage de migration EF pour écrire le code C# pour configurer ma base de données (ce script contient toutes mes créations tables/indexes/Keys/...). Je trouve cela très utile, tout mon schéma dabatase est scripté, facile à mettre à jour et à mettre à jour avec le reste de mon projet.

Maintenant, ma question, est-il possible de faire la même chose avec DynamoDB .NET SDK? J'ai déjà lu les documents suivants sur la création de tables, mais j'ai presque 50 tables, et c'est vraiment pénible d'écrire toute la configuration à la main, et comme j'ai déjà défini mes entités, leur doit être quelque chose pour créer automatiquement la base de table et mes entités?

Voici un exemple d'entité que je utilise, et le script de création de la table correspondante:

[DynamoDBTable("ProductCatalog")] 
public class Book 
{ 
    [DynamoDBHashKey] 
    public int Id { get; set; } 
    [DynamoDBProperty] 
    public string Title { get; set; } 
    [DynamoDBProperty] 
    public string ISBN { get; set; } 
    [DynamoDBProperty("Authors")] 
    public List<string> BookAuthors { get; set; } 
} 

var request = new CreateTableRequest 
{ 
    TableName = "ProductCatalog", 
    AttributeDefinitions = new List<AttributeDefinition> 
    { 
     new AttributeDefinition 
     { 
     AttributeName = "Id", 
     AttributeType = "N" 
     }, 
     new AttributeDefinition 
     { 
     AttributeName = "ISBN", 
     AttributeType = "S" 
     } 
    }, 
    KeySchema = new List<KeySchemaElement> 
    { 
     new KeySchemaElement 
     { 
     AttributeName = "Id", 
     KeyType = "HASH" 
     }, 
     new KeySchemaElement 
     { 
     AttributeName = "ISBN", 
     KeyType = "RANGE" 
     } 
    }, 
    ProvisionedThroughput = new ProvisionedThroughput 
    { 
     ReadCapacityUnits = 1, 
     WriteCapacityUnits = 1 
    }, 

}; 
var response = client.CreateTable(request); 

Un conseil? A quelque chose me manque?

Répondre

1

Malheureusement, cela n'est actuellement pas possible avec AWS SDK for .NET. Si vous le souhaitez, vous pouvez ouvrir un problème pour une demande de fonctionnalité pour ce in the official GitHub repo. Le SDK est également à source ouverte, donc si vous implémentez quelque chose qui, selon vous, peut être bénéfique pour d'autres développeurs, vous pouvez soumettre une demande d'extraction pour inclure votre source dans le SDK.