דילוג לתוכן
  • דף הבית
  • קטגוריות
  • פוסטים אחרונים
  • משתמשים
  • חיפוש
  • חוקי הפורום
כיווץ
תחומים

תחומים - פורום חרדי מקצועי

💡 רוצה לזכור קריאת שמע בזמן? לחץ כאן!
  1. דף הבית
  2. תכנות
  3. הגדרת חיבור DB ב-EF

הגדרת חיבור DB ב-EF

מתוזמן נעוץ נעול הועבר תכנות
10 פוסטים 5 כותבים 295 צפיות
  • מהישן לחדש
  • מהחדש לישן
  • הכי הרבה הצבעות
התחברו כדי לפרסם תגובה
נושא זה נמחק. רק משתמשים עם הרשאות מתאימות יוכלו לצפות בו.
  • yyyY מנותק
    yyyY מנותק
    yyy
    כתב ב נערך לאחרונה על ידי yyy
    #1

    מנסה ליצור חיבור ל-DB באמצעות ספריית Context של EF.

    נתחיל מהסוף הנה השגיאה (זמן ריצה)

    database "Numbers" requested by the login. The login failed.
    Login failed for user 'LAPTOP-QLS0D39V\yaakov'.'
    

    יש לי DB שיצרתי ב-MSSMS בשם UploadProject.
    בתוכו יש טבלה בשם Numbers שמכילה שדה אחד בשם number מסוג int. (יש כעת 2 רשומות אקראיות).

    ה-Context נראה כך:

    public class Context: DbContext
      {
          public Context(DbContextOptions<Context> options) : base(options)
          {
          }
    
          public virtual DbSet<MyNumberEO> Numbers { get; set; }
          protected override void OnModelCreating(ModelBuilder modelBuilder)
          {
              modelBuilder.Entity<MyNumberEO>().HasKey(n => n.Number);
          }
      }
    
    

    כאשר MyNumberEO נראה כך

     [Table("Numbers")]
        public class MyNumberEO
        {
            
            public int Number { get; set; }
        }
    
    

    ConnectionStrings נראית כך

    
    
    {
      "ConnectionStrings": {
        "UploadProject": "Data Source=(localdb)\\ProjectsV13;Initial Catalog=Numbers;Integrated Security=True;Connect Timeout=30;Encrypt=False;TrustServerCertificate=False;ApplicationIntent=ReadWrite;MultiSubnetFailover=False"
      },
    

    למעשה יש לי עוד פרוייקט עם אותו ConnectionString למעט כמובן השם וה-Initial Catalog וזה עובד לי טוב.
    קובץ ה-startup.cs נראה כך:

    public class Startup
        {
            public Startup(IConfiguration configuration)
            {
                Configuration = configuration;
            }
    
            public IConfiguration Configuration { get; }
    
            // This method gets called by the runtime. Use this method to add services to the container.
            public void ConfigureServices(IServiceCollection services)
            {
                string ConnectionString = Configuration.GetConnectionString("UploadProject");
                services.AddDbContext<Context>(options => options.UseSqlServer(ConnectionString));
                services.AddControllers();
            }
    
            // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
            public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
            {
    
                if (env.IsDevelopment())
                {
                    app.UseDeveloperExceptionPage();
                }
    
                app.UseHttpsRedirection();
    
                app.UseRouting();
    
                app.UseAuthorization();
    
                app.UseEndpoints(endpoints =>
                {
                    endpoints.MapControllers();
                });
            }
        }
    

    שורה תחתונה יש את השגיאה שבראש ההודעה.
    יש רעיון למישהו?

    תגובה 1 תגובה אחרונה
    2
    • dovidD מנותק
      dovidD מנותק
      dovid ניהול
      כתב ב נערך לאחרונה על ידי
      #2

      כל הכבוד על השאלה המפורטת, אבל חסר לי קוד אחד, הקוד בו מתרחשת השגיאה.
      אתה יותר שמה מופע של Context או משתמש בהזרקת תלויות?

      מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

      בכל נושא אפשר ליצור קשר dovid@tchumim.com

      yyyY תגובה 1 תגובה אחרונה
      1
      • yyyY מנותק
        yyyY מנותק
        yyy
        השיב לdovid ב נערך לאחרונה על ידי
        #3

        @dovid צודק.
        הנה הקוד. סתם קונטרולר לשם הבדיקה

        [Route("api/[controller]")]
            [ApiController]
            public class Numbers : ControllerBase
            {
                private readonly Context context;
                public Numbers(Context context)
                {
                    this.context = context;
                }
                [HttpGet]
                [Route("GetNumberFromServer")]
                public IActionResult GetNumberFromServer()
                {
                    List<int> ln = context.Numbers.Select(x => x.Number).ToList();
                    return Ok(ln[0]);
                }
            }
        
        תגובה 1 תגובה אחרונה
        0
        • yyyY מנותק
          yyyY מנותק
          yyy
          כתב ב נערך לאחרונה על ידי yyy
          #4

          עוד קצת מידע
          אני מנסה את הכתובת הבאה

          https://localhost:44345/api/Numbers/GetNumberFromServer
          

          מתבצעת כניסה לקונטורולר
          אבל השרת מקפיץ את השגיאה הנה מורחבת

          Microsoft.Data.SqlClient.SqlException
            HResult=0x80131904
            Message=Cannot open database "Numbers" requested by the login. The login failed.
          Login failed for user 'LAPTOP-QLS0D39V\yaakov'.
            Source=Core Microsoft SqlClient Data Provider
            StackTrace:
             at Microsoft.Data.SqlClient.SqlInternalConnectionTds..ctor(DbConnectionPoolIdentity identity, SqlConnectionString connectionOptions, SqlCredential credential, Object providerInfo, String newPassword, SecureString newSecurePassword, Boolean redirectedUserInstance, SqlConnectionString userConnectionOptions, SessionData reconnectSessionData, Boolean applyTransientFaultHandling, String accessToken, DbConnectionPool pool, SqlAuthenticationProviderManager sqlAuthProviderManager)
             at Microsoft.Data.SqlClient.SqlConnectionFactory.CreateConnection(DbConnectionOptions options, DbConnectionPoolKey poolKey, Object poolGroupProviderInfo, DbConnectionPool pool, DbConnection owningConnection, DbConnectionOptions userOptions)
             at Microsoft.Data.ProviderBase.DbConnectionFactory.CreatePooledConnection(DbConnectionPool pool, DbConnection owningObject, DbConnectionOptions options, DbConnectionPoolKey poolKey, DbConnectionOptions userOptions)
             at Microsoft.Data.ProviderBase.DbConnectionPool.CreateObject(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
             at Microsoft.Data.ProviderBase.DbConnectionPool.UserCreateRequest(DbConnection owningObject, DbConnectionOptions userOptions, DbConnectionInternal oldConnection)
             at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, UInt32 waitForMultipleObjectsTimeout, Boolean allowCreate, Boolean onlyOneCheckConnection, DbConnectionOptions userOptions, DbConnectionInternal& connection)
             at Microsoft.Data.ProviderBase.DbConnectionPool.TryGetConnection(DbConnection owningObject, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal& connection)
             at Microsoft.Data.ProviderBase.DbConnectionFactory.TryGetConnection(DbConnection owningConnection, TaskCompletionSource`1 retry, DbConnectionOptions userOptions, DbConnectionInternal oldConnection, DbConnectionInternal& connection)
             at Microsoft.Data.ProviderBase.DbConnectionInternal.TryOpenConnectionInternal(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
             at Microsoft.Data.ProviderBase.DbConnectionClosed.TryOpenConnection(DbConnection outerConnection, DbConnectionFactory connectionFactory, TaskCompletionSource`1 retry, DbConnectionOptions userOptions)
             at Microsoft.Data.SqlClient.SqlConnection.TryOpen(TaskCompletionSource`1 retry)
             at Microsoft.Data.SqlClient.SqlConnection.Open()
             at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.OpenDbConnection(Boolean errorsExpected)
             at Microsoft.EntityFrameworkCore.Storage.RelationalConnection.Open(Boolean errorsExpected)
             at Microsoft.EntityFrameworkCore.Storage.RelationalCommand.ExecuteReader(RelationalCommandParameterObject parameterObject)
             at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.Enumerator.InitializeReader(DbContext _, Boolean result)
             at Microsoft.EntityFrameworkCore.SqlServer.Storage.Internal.SqlServerExecutionStrategy.Execute[TState,TResult](TState state, Func`3 operation, Func`3 verifySucceeded)
             at Microsoft.EntityFrameworkCore.Query.Internal.QueryingEnumerable`1.Enumerator.MoveNext()
             at System.Collections.Generic.List`1..ctor(IEnumerable`1 collection)
             at System.Linq.Enumerable.ToList[TSource](IEnumerable`1 source)
             at uploadProj2.Controllers.Numbers.GetNumberFromServer() in C:\Users\yaakov\source\repos\uploadProj2\uploadProj2\Controllers\Numbers.cs:line 24
             at Microsoft.Extensions.Internal.ObjectMethodExecutor.Execute(Object target, Object[] parameters)
             at Microsoft.AspNetCore.Mvc.Infrastructure.ActionMethodExecutor.SyncActionResultExecutor.Execute(IActionResultTypeMapper mapper, ObjectMethodExecutor executor, Object controller, Object[] arguments)
             at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeActionMethodAsync()
             at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.Next(State& next, Scope& scope, Object& state, Boolean& isCompleted)
             at Microsoft.AspNetCore.Mvc.Infrastructure.ControllerActionInvoker.InvokeNextActionFilterAsync()
          
            This exception was originally thrown at this call stack:
              [External Code]
              uploadProj2.Controllers.Numbers.GetNumberFromServer() in Numbers.cs
              [External Code]
          
          תגובה 1 תגובה אחרונה
          0
          • dovidD מנותק
            dovidD מנותק
            dovid ניהול
            כתב ב נערך לאחרונה על ידי
            #5

            כתבת:

            Initial Catalog=Numbers
            

            בעוד צריך להיות:

            Initial Catalog=UploadProject
            

            מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

            בכל נושא אפשר ליצור קשר dovid@tchumim.com

            תגובה 1 תגובה אחרונה
            5
            • yyyY מנותק
              yyyY מנותק
              yyy
              כתב ב נערך לאחרונה על ידי yyy
              #6

              תודה רבה זה עובד. אין כמוך.
              נ.ב. עד מתי אמשיך ליפול ולשרוף שעות על השטויות הקטנות והקריטיות האלו???

              dovidD yossizY משתמש תמיםמ 3 תגובות תגובה אחרונה
              2
              • dovidD מנותק
                dovidD מנותק
                dovid ניהול
                השיב לyyy ב נערך לאחרונה על ידי
                #7

                @yyy כתב בהגדרת חיבור DB ב-EF:

                נ.ב. עד מתי אמשיך ליפול ולשרוף שעות על השטויות הקטנות והקריטיות האלו???

                אני לגמרי כמוך, תראה איזה הלוך ושוב כתבתי לך כשהתשובה הייתה כבר בשלוש שורות הראשונות של השאלה שלך...
                יש כאלה מפתחים שחזקים בלשים לב לפרטים, אני לא...

                מנטור אישי למתכנתים (ולא רק) – להתקדם לשלב הבא!

                בכל נושא אפשר ליצור קשר dovid@tchumim.com

                תגובה 1 תגובה אחרונה
                4
                • yossizY מנותק
                  yossizY מנותק
                  yossiz
                  השיב לyyy ב נערך לאחרונה על ידי
                  #8

                  @yyy כתב בהגדרת חיבור DB ב-EF:

                  נ.ב. עד מתי אמשיך ליפול ולשרוף שעות על השטויות הקטנות והקריטיות האלו???

                  זה נמשך כל החיים למרות שזה מתמעט עם הזמן

                  📧 יוסי@מייל.קום | 🌎 בלוג | ☕ קפה

                  WWWW תגובה 1 תגובה אחרונה
                  11
                  • משתמש תמיםמ מנותק
                    משתמש תמיםמ מנותק
                    משתמש תמים
                    השיב לyyy ב נערך לאחרונה על ידי
                    #9

                    @yyy כתב בהגדרת חיבור DB ב-EF:

                    תודה רבה זה עובד. אין כמוך.
                    נ.ב. עד מתי אמשיך ליפול ולשרוף שעות על השטויות הקטנות והקריטיות האלו???

                    רק תפילה (ברצינות) יש לפעמים דברים קטנים שאתה מפספס ויכול לקחת שבוע למצוא אותם אם אין לך סייעתא דשמייא

                    עזרתי לך? תראה לי את זה על ידי לחיצה על ה^ בצד שמאל למטה.

                    תגובה 1 תגובה אחרונה
                    6
                    • yyyY yyy התייחס לנושא זה ב
                    • WWWW מנותק
                      WWWW מנותק
                      WWW
                      השיב לyossiz ב נערך לאחרונה על ידי
                      #10

                      @yossiz כתב בהגדרת חיבור DB ב-EF:

                      זה נמשך כל החיים למרות שזה מתמעט עם הזמן

                      מהנסיון שלי עם חבר (הרבה יותר ותיק ממני בתכנות), הרבה פעמים מה שעוזר לזה: זה לעבור על הקוד (שיתוף מסך וכדו') עם חבר טוב, בד"כ תוך זמן קצר עולים על הבעיה. לפעמים אפילו שיחה טלפונית עם רקע על הבעיה כשהחבר מנסה להעלות השערות גם עוזר בזמן קצר.
                      [ההסבר לזה לכאורה כי המח של המתכנת שכתב את הקוד נמצא בריבוע מסוים, כשמגיע משיהו במחוץ זה פותח את הריבוע].

                      WWW.netfree@gmail.com || קשבק! החזר כספי לבנק על רכישות באינטרנט || עונים על סקרים ומרוויחים כסף!

                      תגובה 1 תגובה אחרונה
                      6

                      בא תתחבר לדף היומי!
                      • התחברות

                      • אין לך חשבון עדיין? הרשמה

                      • התחברו או הירשמו כדי לחפש.
                      • פוסט ראשון
                        פוסט אחרון
                      0
                      • דף הבית
                      • קטגוריות
                      • פוסטים אחרונים
                      • משתמשים
                      • חיפוש
                      • חוקי הפורום