1+ using CommandLine ;
2+ using EF_YC ;
3+ using EfCore . Ydb . Extensions ;
4+ using Microsoft . EntityFrameworkCore ;
5+ using Microsoft . Extensions . Logging ;
6+ using Ydb . Sdk . Yc ;
7+
8+ await Parser . Default . ParseArguments < CmdOptions > ( args ) . WithParsedAsync ( async cmd =>
9+ {
10+ var loggerFactory = LoggerFactory . Create ( builder => builder . AddConsole ( ) . SetMinimumLevel ( LogLevel . Information ) ) ;
11+ var saProvider = new ServiceAccountProvider ( saFilePath : cmd . SaFilePath , loggerFactory : loggerFactory ) ;
12+
13+ var options = new DbContextOptionsBuilder < AppDbContext > ( )
14+ . UseYdb ( cmd . ConnectionString , builder =>
15+ {
16+ builder . WithCredentialsProvider ( saProvider ) ;
17+ builder . WithServerCertificates ( YcCerts . GetYcServerCertificates ( ) ) ;
18+ } )
19+ . Options ;
20+
21+ await using var db = new AppDbContext ( options ) ;
22+ db . Database . EnsureCreated ( ) ;
23+
24+ db . Users . Add ( new User { Name = "Alex" , Email = "[email protected] " } ) ; 25+ db . Users . Add ( new User { Name = "Kirill" , Email = "[email protected] " } ) ; 26+ db . SaveChanges ( ) ;
27+
28+ var users = db . Users . OrderBy ( u => u . Id ) . ToList ( ) ;
29+ Console . WriteLine ( "Users in database:" ) ;
30+ foreach ( var user in users )
31+ {
32+ Console . WriteLine ( $ "- { user . Id } : { user . Name } ({ user . Email } )") ;
33+ }
34+ } ) ;
35+
36+
37+ internal class User
38+ {
39+ public int Id { get ; set ; }
40+ public string Name { get ; set ; }
41+ public string Email { get ; set ; }
42+ public DateTime CreatedAt { get ; set ; } = DateTime . UtcNow ;
43+ }
44+
45+ internal class AppDbContext ( DbContextOptions options ) : DbContext ( options )
46+ {
47+ public DbSet < User > Users { get ; set ; }
48+ }
0 commit comments